private IEnumerator FadeAndSwitchScenes(string sceneName)
    {
        m_ScreenFader.FadeOut();

        while (m_ScreenFader.IsFading)
        {
            Debug.Log("Fading...");

            yield return(null);
        }

        OnSceneUnload?.Invoke();

        yield return(SceneManager.UnloadSceneAsync(SceneManager.GetActiveScene().buildIndex));

        yield return(StartCoroutine(LoadSceneAndSetActive(sceneName)));

        OnSceneLoaded?.Invoke();

        StateController.Instance.StateMachine.ChangeState(StateController.shop);

        m_ScreenFader.FadeIn();

        while (m_ScreenFader.IsFading)
        {
            Debug.Log("Fading...");

            yield return(null);
        }
    }
Esempio n. 2
0
        public static void SceneUnload()
        {
            Scene scene = SceneManager.GetActiveScene();

            //DebugManager.LogToFile("[OnSceneLoad] " + scene.name + " has unloaded");
            OnSceneUnload?.Invoke(scene);
        }
Esempio n. 3
0
        /// <summary>
        /// Clears all scene objects from the current scene.
        /// </summary>
        public static void Clear()
        {
            if (activeSceneUUID != UUID.Empty)
            {
                OnSceneUnload?.Invoke(activeSceneUUID);
            }

            Internal_ClearScene();

            activeSceneUUID     = UUID.Empty;
            activeSceneName     = "Unnamed";
            activateOnLoadScene = null;
        }
Esempio n. 4
0
        public static void UnloadSceneAsync(string sceneName, Action onComplete = null)
        {
            if (!LoadedScenes.Contains(sceneName))
            {
                return;
            }

            LoadedScenes.Remove(sceneName);

            UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(sceneName);

            UnityEngine.SceneManagement.SceneManager.sceneUnloaded += (scene) =>
            {
                if (scene.name != sceneName)
                {
                    return;
                }
                onComplete.SafeInvoke();
                OnSceneUnload.SafeInvoke(sceneName);
            };
        }
Esempio n. 5
0
 static IEnumerator UnloadSceneAsync(string sceneName)
 {
     OnSceneUnload?.Invoke();
     yield return(SceneManager.UnloadSceneAsync(sceneName));
 }