Beispiel #1
0
        public IEnumerator Enter(GameStateController controller)
        {
            yield return(controller.StartLoading());

            var menuSceneName = controller.MainMenuSceneName;

            _menuScene = SceneManager.GetSceneByName(menuSceneName);
            if (_menuScene.IsValid() && _menuScene.isLoaded)
            {
                yield return(controller.FinishLoading());

                yield break;
            }



            _loadingOp = SceneManager.LoadSceneAsync(menuSceneName, LoadSceneMode.Additive);
            while (!_loadingOp.isDone)
            {
                yield return(null);

                controller.SetProgress(_loadingOp.progress);
            }
            _menuScene = SceneManager.GetSceneByName(menuSceneName);

            yield return(new WaitForSeconds(1f));//For Debug

            yield return(controller.FinishLoading());
        }
Beispiel #2
0
        public IEnumerator Enter(GameStateController controller)
        {
            yield return(controller.StartLoading());

            var gameSceneName = controller.GameSceneName;

            _gameScene = SceneManager.GetSceneByName(gameSceneName);
            if (!_gameScene.IsValid() || !_gameScene.isLoaded)
            {
                _loadingOp = SceneManager.LoadSceneAsync(gameSceneName, LoadSceneMode.Additive);
                while (!_loadingOp.isDone)
                {
                    yield return(null);

                    controller.SetProgress(_loadingOp.progress * 0.5f);
                }

                _gameScene = SceneManager.GetSceneByName(gameSceneName);
            }

            yield return(new WaitForSeconds(1f));//For Debug

            var levelSceneName = controller.CurrentLevel.SceneName;

            _levelScene = SceneManager.GetSceneByName(levelSceneName);

            if (!_levelScene.IsValid() || !_levelScene.isLoaded)
            {
                _loadingOp = SceneManager.LoadSceneAsync(levelSceneName, LoadSceneMode.Additive);
                while (!_loadingOp.isDone)
                {
                    yield return(null);

                    controller.SetProgress(0.5f + _loadingOp.progress * 0.5f);
                }

                _levelScene = SceneManager.GetSceneByName(levelSceneName);
            }

            if (!controller.SaveFileName.StartsWith("Begin"))
            {
                GameController.Instance.LoadFromSaves(controller.SaveFileName);
            }

            yield return(controller.FinishLoading());

            GameController.Instance.Play();
        }