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); } }
public static void SceneUnload() { Scene scene = SceneManager.GetActiveScene(); //DebugManager.LogToFile("[OnSceneLoad] " + scene.name + " has unloaded"); OnSceneUnload?.Invoke(scene); }
/// <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; }
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); }; }
static IEnumerator UnloadSceneAsync(string sceneName) { OnSceneUnload?.Invoke(); yield return(SceneManager.UnloadSceneAsync(sceneName)); }