예제 #1
0
 /// <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);
 }
예제 #2
0
 /// <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);               // 如果为空则不执行
     }
 }
예제 #3
0
        /// <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);               // 如果为空则不执行
            }
        }