/// <summary> /// 重置方法,默认都执行 /// </summary> /// <param name="state"></param> /// <param name="player"></param> public void TransitionState(PlayerBaseState state, PlayerFSMSystem player) { // Debug.Log(currentState.name + "====>" + state.name); currentState?.Exit(player); // 如果为空则不执行 currentState = state; currentState?.Enter(player); }
/// <summary> /// /// </summary> /// <param name="state"></param> /// <param name="player"></param> /// <param name="executeEnter">是否执行 Enter</param> /// <param name="executeExit">是否执行 Exit</param> public void TransitionState(PlayerBaseState state, PlayerFSMSystem player, bool executeEnter, bool executeExit) { if (executeExit) { currentState?.Exit(player); } currentState = state; if (executeEnter) { currentState?.Enter(player); // 如果为空则不执行 } }
/// <summary> /// 上面方法的重置 /// </summary> /// <param name="state"></param> /// <param name="executeEnter"></param> /// <param name="executeExit"></param> private void SetRootCurrentState(PlayerBaseState state, bool executeEnter, bool executeExit) { if (this.curState == state) { return; } if (executeExit) { curState?.Exit(this); } curState = state; if (executeEnter) { curState?.Enter(this); // 如果为空则不执行 } }