///<summary> /// 切换当前有限状态机状态。 ///</summary> ///<typeparam name="TState">要切换到的有限状态机状态类型。</typeparam> ///<param name="fsm">有限状态机引用。</param> protectedvoidChangeState<TState>(IFsm<T> fsm) where TState : FsmState<T> { Fsm<T> fsmImplement = (Fsm<T>)fsm; if (fsmImplement == null) { thrownew GameFrameworkException("FSM is invalid."); }
fsmImplement.ChangeState<TState>(); }
///<summary> /// 切换当前有限状态机状态。 ///</summary> ///<param name="fsm">有限状态机引用。</param> ///<param name="stateType">要切换到的有限状态机状态类型。</param> protectedvoidChangeState(IFsm<T> fsm, Type stateType) { Fsm<T> fsmImplement = (Fsm<T>)fsm; if (fsmImplement == null) { thrownew GameFrameworkException("FSM is invalid."); }
if (stateType == null) { thrownew GameFrameworkException("State type is invalid."); }
if (!typeof(FsmState<T>).IsAssignableFrom(stateType)) { thrownew GameFrameworkException(Utility.Text.Format("State type '{0}' is invalid.", stateType.FullName)); }