using System; using Cysharp.Threading.Tasks; using UnityEngine; namespace Stary.Evo { public interface FSMIState { IFsmSystem FsmSystem { get; } string Name { get; } //进入该状态时调用 void OnEnter(); void OnEnter(object param); void OnEnter(T param); void OnEnter(T1 param1, T2 param2); //每帧调用 void OnUpdate(); //退出该状态时调用 void OnExit(); } public abstract class AbstractFSMIState : FSMIState { public IFsmSystem FsmSystem { get; } public string Name { get; } public AbstractFSMIState(IFsmSystem system) { FsmSystem = system; Name = GetType().Name; } public virtual void OnEnter(object param) { } public virtual void OnEnter(T param) { } public virtual void OnEnter(T1 param1, T2 param2) { } public abstract void OnEnter(); public virtual void OnUpdate() { // Timer += Time.deltaTime; } public abstract void OnExit(); } }