Esempio n. 1
0
    private IEnumerator AnimateUnloadAdditiveScene(SceneAnimationEventsManager animEventsManager, Action onUnloaded = null)
    {
        if (additiveScenes.Count > 0)
        {
            if (animEventsManager == null)
            {
                animEventsManager = FindObjectsOfType <SceneAnimationEventsManager>()
                                    .FirstOrDefault(m => m.gameObject.scene == UnitySceneManager.GetSceneByBuildIndex((int)additiveScenes.Peek()));
            }

            // Found
            if (animEventsManager != null)
            {
                animEventsManager.FadeOut();

                yield return(new WaitUntil(() => animEventsManager.FadedOut));
            }

            var scene = additiveScenes.Pop();

            UnloadScene((int)scene);
            onUnloaded?.Invoke();
        }

        this.RemoveCoroutine(nameof(AnimateUnloadAdditiveScene));
    }
Esempio n. 2
0
 public void ResumeGame(SceneAnimationEventsManager animEventsManager = null)
 {
     UnloadLastAdditiveScene(animEventsManager, () =>
     {
         isPaused       = false;
         Time.timeScale = 1f;
     });
 }
Esempio n. 3
0
    private IEnumerator AnimateChangeSceneTo(Scene scene, SceneAnimationEventsManager animEventsManager)
    {
        if (CurrentScene != scene)
        {
            if (animEventsManager == null)
            {
                animEventsManager = FindObjectOfType <SceneAnimationEventsManager>();
            }

            CurrentScene = scene;

            // Found
            if (animEventsManager != null)
            {
                animEventsManager.FadeOut();

                yield return(new WaitUntil(() => animEventsManager.FadedOut));
            }

            LoadSceneImmediately();

            this.RemoveCoroutine(nameof(AnimateChangeSceneTo));
        }
    }
Esempio n. 4
0
 public void ChangeSceneTo(Scene scene, SceneAnimationEventsManager animEventsManager = null) =>
 this.RestartCoroutine(AnimateChangeSceneTo(scene, animEventsManager), nameof(AnimateChangeSceneTo));
Esempio n. 5
0
 public void UnloadLastAdditiveScene(SceneAnimationEventsManager animEventsManager = null, Action onUnloaded = null) =>
 this.RestartCoroutine(AnimateUnloadAdditiveScene(animEventsManager, onUnloaded), nameof(AnimateUnloadAdditiveScene));