#if GRAPH_DESIGNER using UnityEngine; using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; using BaseGames.Boss; namespace BaseGames.Enemies.AI { /// /// 触发 Boss 技能。OnStart 调用 BossBase.UseBossSkill(skillId),OnUpdate 等待技能结束。 /// 失败条件:非 Boss 敌人、技能 ID 无效、BossSkillExecutor 未就绪或技能执行中。 /// [TaskName("Use Boss Skill")] [TaskCategory("BaseGames/Enemy/Boss")] [TaskDescription("通过技能 ID 执行 Boss 指定技能")] public sealed class BD_UseBossSkill : Action { [SerializeField] private string m_SkillId = ""; [Tooltip("可选:直接拖拽 BossSkillSO 资产以替代裸字符串(优先于 m_SkillId)")] [SerializeField] private BossSkillSO m_SkillSO; private BossBase _boss; private bool _startedSuccessfully; public override void OnAwake() { _boss = gameObject.GetComponent(); } public override void OnStart() { _startedSuccessfully = false; if (_boss == null) return; string id = m_SkillSO != null ? m_SkillSO.skillId : m_SkillId; if (string.IsNullOrEmpty(id)) return; _startedSuccessfully = _boss.UseBossSkill(id); } public override TaskStatus OnUpdate() { if (!_startedSuccessfully || _boss == null) return TaskStatus.Failure; return _boss.IsBossSkillExecuting ? TaskStatus.Running : TaskStatus.Success; } public override void OnEnd() { _startedSuccessfully = false; } } } #endif