public void Start(BaseState <T> initialState) { CurrentState = new ReactiveProperty <BaseState <T> >(initialState); BevoreStateChange.Execute(CurrentState.Value); CurrentState.Value.Enter(this); AfterStateChange.Execute(initialState); }
public bool GoToState(BaseState <T> state) { if (!CurrentState.Value.ValidNextStates.Contains(state.GetType()) || !CurrentState.Value.Exit()) { return(false); } BevoreStateChange.Execute(state); CurrentState.Value = state; CurrentState.Value.Enter(this); AfterStateChange.Execute(state); return(true); }