#if GRAPH_DESIGNER using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; using UnityEngine; using BaseGames.Boss; namespace BaseGames.Enemies.AI { /// /// BD Conditional:检查 Boss 技能是否冷却就绪。 /// 支持拖拽 BossSkillSO 或直接填写 skillId 字符串(SO 优先)。 /// [TaskName("Can Use Boss Skill?")] [TaskCategory("BaseGames/Enemy/Boss")] [TaskDescription("检查指定 Boss 技能是否在当前阶段可用且冷却就绪")] public class BD_CanUseBossSkill : Conditional { [SerializeField] private BossSkillSO m_SkillSO; [SerializeField] private string m_SkillId; private BossBase _boss; private BossSkillExecutor _executor; public override void OnAwake() { _boss = GetComponent(); _executor = GetComponentInChildren(); } public override TaskStatus OnUpdate() { if (_executor == null) return TaskStatus.Failure; string id = m_SkillSO != null ? m_SkillSO.skillId : m_SkillId; if (string.IsNullOrEmpty(id)) return TaskStatus.Failure; return _executor.CanUseSkill(id) ? TaskStatus.Success : TaskStatus.Failure; } } } #endif