public class IVMateAppearState : IState { IVMate owner; IVCharacter player; StateHandler stateHandler; public IVMateAppearState(IVMate owner, IVCharacter player) { this.owner = owner; this.player = player; } public void Enter(StateHandler excutor) { stateHandler = excutor; #if UNITY_EDITOR if(owner.SkeletonAnimation != null && owner.SkeletonAnimation.TryGetAnimation("warp_in", out Spine.Animation _)) #endif owner.SkeletonAnimation.AnimationState.SetAnimation(0, "warp_in", true); } public void Excute() { var trackEntry = owner.SkeletonAnimation != null ? owner.SkeletonAnimation.AnimationState.GetCurrent(0) : null; if (trackEntry is null || trackEntry.IsComplete) stateHandler.ChangeState(new IVMateIdleState(owner, player)); } public void Exit() { stateHandler = null; } }