/// <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(); } }
/// <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); //添加 }