1 加入状态枚举
enum EState
{
idle,
run,
skill,
}
2 加入判定类
internal class StateUtils
{
public bool CanRun(object[] args){ }
public bool CanIdle(object[] args){ }
public bool CanAttack(object[] args){ }
}
3 加入委托和词典
void delegate CanStateDelegate(object[] args)
internal class DelegaeteProc
{
public CanSateDelegate m_canStateDelegate = new CanSateDelegate ();
}
dictionary<EState, DelegateProc> m_dicProc = new Dictionary<EState, DelegateProc>();
void RegisterDelegateProc()
{
DelegeateProc idleProc = new IdleProc();
idleProc._canStateDelegate = StateUtils.CanIdle;
m_dicProc.add(state.idle, idleProc);
}
4 进行状态切换
DelegaeteProc delegateProc = null;
if(m_dic.tryGetValue(eEnterState, out delgatePorce)
{
object[] args = new object() { eEnterState }
if(delegateProc(args))
{
EnterState(eEnterState);
}
}