public void Execute(UnloadAllScenesExceptSignal loadParams) { SceneManager.SetActiveScene(SceneManager.GetSceneByName(loadParams.Scene)); IPromise lastPromise = null; int count = SceneManager.sceneCount; for (int i = 0; i < count; i++) { Scene scene = SceneManager.GetSceneAt(i); if (scene.isLoaded && !scene.name.Equals(loadParams.Scene)) { if (lastPromise != null) { lastPromise = lastPromise.Then(() => _sceneLoader.UnloadScene(scene.name)); } else { lastPromise = _sceneLoader.UnloadScene(scene.name); } } } //Add promise to resolve OnComplete if (lastPromise != null) { lastPromise.Done( () => { Debug.Log(string.Format("{0} , scene loading/unloading completed!", this)); if (loadParams.OnComplete != null) { loadParams.OnComplete.Resolve(); } }, exception => { Debug.LogError("UnloadAllScenesExceptCommand.Execute: " + exception.ToString()); if (loadParams.OnComplete != null) { loadParams.OnComplete.Reject(exception); } } ); } else { Debug.Log(string.Format("{0} , no scenes loaded/unloaded!", this)); if (loadParams.OnComplete != null) { loadParams.OnComplete.Resolve(); } } }
public void UnloadScene(string sceneName) { if (!m_CurrentScenes.Contains(sceneName)) { throw new DrbException("not exists scene '{0}'", sceneName); } m_Loader.UnloadScene(sceneName); }
public void Execute(UnloadSceneSignal loadParams) { _sceneLoader.UnloadScene(loadParams.Scene).Done( () => { loadParams.OnComplete?.Resolve(); }, exception => { loadParams.OnComplete?.Reject(exception); } ); }
//First loads an optional array of scenes, then //unloads a separate optional array of scenes. //Each call to load/unload is added into a //promise chain. When complete, the last promise //fires an optional OnComplete delegate. public void Execute(LoadUnloadScenesSignal loadUnloadParams) { IPromise lastPromise = null; //Load scenes if (loadUnloadParams.LoadScenes != null) { foreach (var sceneName in loadUnloadParams.LoadScenes) { var name = sceneName; lastPromise = lastPromise != null?lastPromise.Then(() => _sceneLoader.LoadScene(name)) : _sceneLoader.LoadScene(sceneName); } } //Unload scenes if (loadUnloadParams.UnloadScenes != null) { foreach (var sceneName in loadUnloadParams.UnloadScenes) { var name = sceneName; lastPromise = lastPromise != null?lastPromise.Then(() => _sceneLoader.UnloadScene(name)) : _sceneLoader.UnloadScene(sceneName); } } //Add promise to resolve OnComplete if (lastPromise != null) { lastPromise.Done( () => { Debug.Log($"{this} , scene loading/unloading completed!"); loadUnloadParams.OnComplete?.Resolve(); }, exception => { loadUnloadParams.OnComplete?.Reject(exception); } ); } else { Debug.Log($"{this} , no scenes loaded/unloaded!"); loadUnloadParams.OnComplete?.Resolve(); } }
//First loads an optional array of scenes, then //unloads a separate optional array of scenes. //Each call to load/unload is added into a //promise chain. When complete, the last promise //fires an optional OnComplete delegate. public void Execute(LoadUnloadScenesSignal loadUnloadParams) { IPromise lastPromise = null; //Load scenes if (loadUnloadParams.LoadScenes != null) { for (int i = 0; i < loadUnloadParams.LoadScenes.Length; i++) { string sceneName = loadUnloadParams.LoadScenes[i]; if (lastPromise != null) { lastPromise = lastPromise.Then(() => _sceneLoader.LoadScene(sceneName)); } else { lastPromise = _sceneLoader.LoadScene(sceneName); } } } //Unload scenes if (loadUnloadParams.UnloadScenes != null) { for (int i = 0; i < loadUnloadParams.UnloadScenes.Length; i++) { string sceneName = loadUnloadParams.UnloadScenes[i]; if (lastPromise != null) { lastPromise = lastPromise.Then(() => _sceneLoader.UnloadScene(sceneName)); } else { lastPromise = _sceneLoader.UnloadScene(sceneName); } } } //Add promise to resolve OnComplete if (lastPromise != null) { lastPromise.Done( () => { Debug.Log(string.Format("{0} , scene loading/unloading completed!", this)); loadUnloadParams.OnComplete?.Resolve(); }, exception => { loadUnloadParams.OnComplete?.Reject(exception); } ); } else { Debug.Log(string.Format("{0} , no scenes loaded/unloaded!", this)); loadUnloadParams.OnComplete?.Resolve(); } }