#if GRAPH_DESIGNER using UnityEngine; using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; using BaseGames.Enemies; namespace BaseGames.Enemies.AI { /// /// BD Action:通过 AnimationClip 名称播放 Animancer 动画,立即返回 Success。 /// ClipName 需与 EnemyAnimationConfigSO 中字段名一致。 /// public class BD_PlayAnimation : Action { /// EnemyAnimationConfigSO 中的 AnimationClip 字段名(如 "Attack_Melee")。 [SerializeField] private string m_ClipName = "Idle"; private EnemyBase _enemy; public override void OnStart() { _enemy = GetComponent(); } public override TaskStatus OnUpdate() { if (_enemy == null || _enemy.AnimConfig == null) return TaskStatus.Failure; var clip = _enemy.AnimConfig.GetClipByName(m_ClipName); if (clip != null) _enemy.Animancer?.Play(clip); return TaskStatus.Success; } } } #endif