Beispiel #1
0
    // 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);
    }
Beispiel #2
0
    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");
    }
Beispiel #3
0
    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
        });
    }
Beispiel #4
0
    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);
        });
    }
Beispiel #5
0
 public void UnSetLevelFSM(FSMLite levelFSM)
 {
     levelFSM.GetState(Game.LevelStateClose).OnStateInEvent.RemoveListener(OnLevelStateCloseIn);
     levelFSM.GetState(Game.LevelStateOpen).OnStateInEvent.RemoveListener(OnLevelStateOpenIn);
 }