protected override void SetupMachine() { base.SetupMachine(); mainState = new MachineState(); firstStartState = new GameObjectMachineState(firstStartGo); secondStartState = new GameObjectMachineState(secondStartGo); thirdStartState = new GameObjectMachineState(thirdStartGo); mainMenuState = new GameObjectMachineState(mainMenuGo); firstGameState = new MachineState(); secondGameState = new MachineState(); thirdGameState = new MachineState(); AllowTrigger(FIRST_START_TRIGGER); AllowTrigger(SECOND_START_TRIGGER); AllowTrigger(THIRD_START_TRIGGER); AllowTrigger(MENU_START_TRIGGER); AllowTrigger(NEXT_TRIGGER); mainState.AddTrigger(FIRST_START_TRIGGER, firstStartState); mainState.AddTrigger(SECOND_START_TRIGGER, secondStartState); mainState.AddTrigger(THIRD_START_TRIGGER, thirdStartState); mainState.AddTrigger(MENU_START_TRIGGER, mainMenuState); firstStartState.AddTrigger(NEXT_TRIGGER, firstGameState); secondStartState.AddTrigger(NEXT_TRIGGER, secondGameState); thirdStartState.AddTrigger(NEXT_TRIGGER, thirdGameState); mainMenuState.AddTrigger(FIRST_START_TRIGGER, firstStartState); mainMenuState.AddTrigger(SECOND_START_TRIGGER, secondStartState); mainMenuState.AddTrigger(THIRD_START_TRIGGER, thirdStartState); mainState.OnStart += MainState_OnStart; firstGameState.OnStart += FirstGameState_OnStart; secondGameState.OnStart += SecondGameState_OnStart; thirdGameState.OnStart += ThirdGameState_OnStart; }