コード例 #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));
    }
コード例 #2
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));
        }
    }