コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
 public void UnloadScene(string sceneName)
 {
     if (!m_CurrentScenes.Contains(sceneName))
     {
         throw new DrbException("not exists scene '{0}'", sceneName);
     }
     m_Loader.UnloadScene(sceneName);
 }
コード例 #3
0
 public void Execute(UnloadSceneSignal loadParams)
 {
     _sceneLoader.UnloadScene(loadParams.Scene).Done(
         () =>
     {
         loadParams.OnComplete?.Resolve();
     },
         exception =>
     {
         loadParams.OnComplete?.Reject(exception);
     }
         );
 }
コード例 #4
0
        //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();
            }
        }
コード例 #5
0
        //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();
            }
        }