// Start is called before the first frame update void Start() { CurrentLevelIndex = 0; Debug.Log("level : " + CurrentLevelIndex); GameFSM.GetState(GameStateLevel).OnStateInEvent.AddListener(() => { LevelFsm = new FSMLite(); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateOpen }); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateClose }); LevelFsm.GetState(LevelStateOpen).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(false); }); LevelFsm.GetState(LevelStateClose).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(true); }); UI.SetLevelFSM(LevelFsm); LevelFsm.Start(LevelStateOpen); if (LevelPrefabList.Count > CurrentLevelIndex) { var levelPrefab = LevelPrefabList[CurrentLevelIndex]; var levelGo = Instantiate(levelPrefab, transform); if (!(levelGo is null)) { Level = levelGo.GetComponent <Level.Level>(); } switchCameraLimit(); } }); GameFSM.GetState(GameStateLevel).OnStateOutEvent.AddListener(() => { UI.UnSetLevelFSM(LevelFsm); LevelFsm.Clear(); LevelFsm = null; Destroy(Level.gameObject); }); UI.SetGameFSM(GameFSM); GameFSM.Start(GameStateMenu); }
public Test() { FSMLite fsmLite = new FSMLite(); //设置多个状态 fsmLite.AddState("IDLE"); fsmLite.AddState("WALK"); fsmLite.AddState("RUN"); fsmLite.AddState("FLY"); //加入转换条件,以及触发回调 fsmLite.AddTranslation("IDLE", "CLICK", "WALK", onWalk); fsmLite.AddTranslation("WALK", "CLICK", "RUN", this.onRun); //启动状态机,默认第一个状态 fsmLite.Start("IDLE"); }
private void OnEnable() { _Instance = this; Application.targetFrameRate = 60; DistortionMask = GameObject.Find("Distortion").gameObject; UI = GameObject.Find("UIManager").GetComponent <UIManager>(); GameFSM = new FSMLite(); GameFSM.RegisterState(new FSMLite.State { Name = GameStateMenu }); GameFSM.RegisterState(new FSMLite.State { Name = GameStateLevel }); GameFSM.RegisterState(new FSMLite.State { Name = GameStateScore }); GameFSM.RegisterState(new FSMLite.State { Name = GameStateFinish }); }
public void SetGameFSM(FSMLite gameFSM) { gameFSM.GetState(Game.GameStateMenu).OnStateInEvent.AddListener(() => { _menuPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateMenu).OnStateOutEvent.AddListener(() => { _menuPanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateLevel).OnStateInEvent.AddListener(() => { _levelPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateLevel).OnStateOutEvent.AddListener(() => { _levelPanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateScore).OnStateInEvent.AddListener(() => { _scorePanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateScore).OnStateOutEvent.AddListener(() => { _scorePanel.gameObject.SetActive(false); }); gameFSM.GetState(Game.GameStateFinish).OnStateInEvent.AddListener(() => { _finishPanel.gameObject.SetActive(true); }); gameFSM.GetState(Game.GameStateFinish).OnStateOutEvent.AddListener(() => { _finishPanel.gameObject.SetActive(false); }); _startGameButton.onClick.AddListener(() => { Game.Get().GameFSM.SetState(Game.GameStateLevel); Sounds.Get().PlayStartButtonSound(); }); _restartGameButton.onClick.AddListener(() => { Game.Get().GameFSM.SetState(Game.GameStateLevel); }); }
public void UnSetLevelFSM(FSMLite levelFSM) { levelFSM.GetState(Game.LevelStateClose).OnStateInEvent.RemoveListener(OnLevelStateCloseIn); levelFSM.GetState(Game.LevelStateOpen).OnStateInEvent.RemoveListener(OnLevelStateOpenIn); }