using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Ether { /// /// 状态类型 /// public enum StateType { Loop = 0, //循环:如idle,walk,run等 Once = 1, //一次:如技能播放等,结束后自动切换会默认状态 } /// /// 状态所处阶段 /// public enum StateStage { Playing = 0, //播放中 Over = 1, //结束 } public abstract class StateBase : IDisposable { protected StateMachine machine; private StateType stateType = StateType.Loop; public virtual StateType StateType { get { return stateType; } set { stateType = value; } } public void Init(StateMachine stateMachine) { this.machine = stateMachine; OnInit(); } public virtual void OnInit() { } public abstract void EnterState(); public abstract void ExitState(); public virtual bool CheckStateIsCanSwitch() { return true; } public virtual void Dispose() { PoolManager.Inst.Push(this); } } }