#if GRAPH_DESIGNER using UnityEngine; using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals; using BaseGames.Enemies; namespace BaseGames.Enemies.AI { /// /// BD Conditional:当前 AI 行为阶段是否与目标匹配。 /// /// 常用于 Decorator Conditional Abort 或 Sequence 头部保护子树, /// 例如只有在 阶段时才执行巡逻序列。 /// [TaskName("Is Ai Phase?")] [TaskCategory("BaseGames/Enemy/State")] [TaskDescription("检查当前 AI 行为阶段是否与目标枚举值匹配")] public sealed class BD_IsAiPhase : Conditional { [Tooltip("目标 AI 行为阶段")] [SerializeField] private AiPhase m_Phase = AiPhase.Patrol; private EnemyBase _enemy; public override void OnAwake() => _enemy = gameObject.GetComponent(); public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; return _enemy.CurrentAiPhase == m_Phase ? TaskStatus.Success : TaskStatus.Failure; } } } #endif