#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 是否与目标状态名称匹配。 /// TargetStateName 直接输入枚举名称字符串(Controlled / Hurt / Stagger / Dead), /// 枚举值顺序变化时 BD 图不会静默失效。 /// public class BD_IsStateMatch : Conditional { /// 目标状态名称(Controlled / Hurt / Stagger / Dead)。 [SerializeField] private string m_TargetStateName = "Controlled"; private EnemyBase _enemy; public override void OnStart() { _enemy = GetComponent(); } public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; if (!System.Enum.TryParse(m_TargetStateName, out var target)) { Debug.LogError($"[BD_IsStateMatch] 未知状态名: '{m_TargetStateName}'," + "有效值为 Controlled / Hurt / Stagger / Dead", gameObject); return TaskStatus.Failure; } return _enemy.CurrentState == target ? TaskStatus.Success : TaskStatus.Failure; } } } #endif