using UnityEngine; public class IVMateCastSkill : State { public override void Enter() { Debug.Assert(Owner.Excutor.SkeletonAnimation != null && Owner.Excutor.SkeletonAnimation.TryGetAnimation("skill", out Spine.Animation _), "SkeletonAnimation is null or skill animation not exist"); Owner.Excutor.SkeletonAnimation.AnimationState.SetAnimation(0, "skill", false); Owner.Excutor.SkeletonAnimation.AnimationState.Event += OnSkillEvent; Owner.Excutor.Skill.transform.position = Owner.Excutor.CenterPivot; Owner.Excutor.Skill.StartCoolTime(); } public override void Excute() { var trackEntry = Owner.Excutor.SkeletonAnimation.AnimationState.GetCurrent(0); if (trackEntry is null || trackEntry.IsComplete) Owner.ChangeState(); } public override void Exit() { Owner.Excutor.SkeletonAnimation.AnimationState.Event -= OnSkillEvent; } private void OnSkillEvent(Spine.TrackEntry trackEntry, Spine.Event e) { if (e.Data.Name == "cast") { Owner.Excutor.Skill.Cast(Owner.Excutor, BuffMgr.Instance.GetCharAtk()); } } }