#if GRAPH_DESIGNER using UnityEngine; using Opsive.BehaviorDesigner.Runtime.Tasks; using Opsive.BehaviorDesigner.Runtime.Tasks.Actions; using BaseGames.Enemies.Abilities; namespace BaseGames.Enemies.AI { /// 动作:中断指定能力。 [TaskName("Interrupt Ability")] [TaskCategory("BaseGames/Enemy/Combat")] [TaskDescription("立即中断指定能力或全部能力")] public sealed class BD_InterruptAbility : Action { [SerializeField] private string m_AbilityId = ""; [SerializeField] private InterruptReason m_Reason = InterruptReason.ExternalRequest; private EnemyBase _enemy; public override void OnAwake() => _enemy = gameObject.GetComponent(); public override TaskStatus OnUpdate() { if (_enemy == null) return TaskStatus.Failure; var ab = _enemy.Abilities.Get(m_AbilityId); if (ab == null) return TaskStatus.Failure; ab.Interrupt(m_Reason); return TaskStatus.Success; } } } #endif