public void ChangeState(E_FSM_State_Type _state, params object[] args) { //没有这个状态 或 就是当前状态 就退出 if (!m_allState.ContainsKey(_state) || _state == m_curState.state) { return; } if (m_curState == null) { return; } //本次状态退出 m_curState.OnExit(args); //退出后把本次状态设为前一个状态 m_priousState = m_curState; //根据想要更改的状态 去字典找 并设为当前状态 m_curState = m_allState[_state]; m_curState.OnEnter(args); }
public PlayerIdle(E_FSM_State_Type _state, Player _p) : base(_state, _p) { }
public PlayerDead(E_FSM_State_Type _state, Player _p) : base(_state, _p) { }
public PlayerLook(E_FSM_State_Type _state, Player _p) : base(_state, _p) { }
public PlayerJump(E_FSM_State_Type _state, Player _p) : base(_state, _p) { }
public PlayerVictory(E_FSM_State_Type _state, Player _p) : base(_state, _p) { }
public T owner; //状态的拥有者方便后期调用 public StateTemplates(E_FSM_State_Type _state, T t) : base(_state) { this.owner = t; }
//初始化 public FSMBase(E_FSM_State_Type _state) { this.state = _state; }