using UnityEngine; using BaseGames.Core.Events; namespace BaseGames.Enemies { /// /// Boss 敌人基类。扩展 以支持多阶段切换与战斗结束广播。 /// 具体 Boss 继承此类并重写 。 /// public class BossBase : EnemyBase { [Header("Boss 配置")] [SerializeField] private string _bossId; [SerializeField] private BoolEventChannelSO _onBossFightEnded; [SerializeField] private BossPhaseEventChannelSO _onBossPhaseChanged; public string BossId => _bossId; protected int _currentPhase = 0; /// /// 进入指定阶段。广播 供 UI / 音乐系统响应。 /// 子类可重写以添加额外过渡逻辑(动画、无敌帧等)。 /// public virtual void EnterPhase(int phase) { _currentPhase = phase; _onBossPhaseChanged?.Raise(new BossPhaseEvent { BossId = _bossId, Phase = phase, }); } /// 检查当前 HP 是否低于指定百分比(0~1)。 public bool IsHPBelow(float ratio) { if (_stats == null || _stats.MaxHP <= 0) return false; return (float)_stats.CurrentHP / _stats.MaxHP < ratio; } protected override void Die() { base.Die(); _onBossFightEnded?.Raise(true); } } }