void Start() { fsm = new FSMManager <Data>(); StateBase <Data> defreezeState = new DefreezeState(fsm); defreezeState.AddTransition(Transition.PressFreeze, StateID.FreezeState); defreezeState.AddTransition(Transition.PressReset, StateID.ResetState); StateBase <Data> freezeState = new FreezeState(fsm); freezeState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState); freezeState.AddTransition(Transition.PressReset, StateID.ResetState); StateBase <Data> resetState = new ResetState(fsm); resetState.AddTransition(Transition.PressDefreeze, StateID.DefreezeState); resetState.AddTransition(Transition.PressFreeze, StateID.FreezeState); fsm.AddState(defreezeState); fsm.AddState(freezeState); fsm.AddState(resetState); fsm.InitState(freezeState); }