#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:敌人当前 EnemyStateType 是否与目标状态匹配。 /// [TaskName("Is State Match?")] [TaskCategory("BaseGames/Enemy/State")] [TaskDescription("检查当前物理/战斗状态是否与目标枚举值匹配")] public class BD_IsStateMatch : Conditional { [SerializeField] private EnemyStateType m_TargetState = EnemyStateType.Controlled; private EnemyBase _enemy; public override void OnAwake() => _enemy = GetComponent(); public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; return _enemy.CurrentState == m_TargetState ? TaskStatus.Success : TaskStatus.Failure; } } } #endif