Пример #1
0
    /// <summary>
    /// 转换状态
    /// </summary>
    /// <param name="transition"></param>
    public void TransitionFSMState(FSMTransition transition)
    {
        FSMStateID stateID = mCurrentState.GetStateIdByTransition(transition);

        if (stateID != FSMStateID.NullFSMStateID)
        {
            mCurrentStateID = stateID;
            mCurrentState.StateEnd();
            //换状态
            mCurrentState = mFSMStateDic.FirstOrDefault(q => q.Key == stateID).Value;
            mCurrentState.StateStart();
        }
    }
Пример #2
0
 /// <summary>
 /// 添加状态
 /// </summary>
 /// <param name="state"></param>
 public void AddFSMState(FSMBaseState state)
 {
     if (state == null)
     {
         return;
     }
     if (mCurrentState == null)
     {
         mCurrentState   = state;
         mCurrentStateID = state.mStateID;
         mCurrentState.StateStart();      //启动?
     }
     if (mFSMStateDic.ContiansKey(state)) //已经存在
     {
         return;
     }
     mFSMStateDic.Add(state.mStateID, state);  //添加
 }