コード例 #1
0
 public void QuitGameplay()
 {
     if (lastActiveScene.isLoaded)
     {
         UnloadScene(lastActiveScene);
         lastActiveScene = null;
     }
 }
コード例 #2
0
 private void SetActiveScene(SceneListItem sceneToSet, bool setActive)
 {
     if (setActive)
     {
         SceneManager.SetActiveScene(sceneToSet.scene);
         MarkArrayIndexAsActive(sceneToSet);
     }
     //listenerManager.ParseListeners(otherScenes[index].scene, setActive);
 }
コード例 #3
0
 private void UnloadAllOtherGameplayScenes(SceneListItem sceneToKeep)
 {
     foreach (SceneListItem item in sceneLibrary)
     {
         if (item != sceneToKeep && item.isGameplayScene && item.isLoaded)
         {
             UnloadScene(item);
         }
     }
 }
コード例 #4
0
 private void MarkArrayIndexAsActive(SceneListItem activeScene)
 {
     foreach (SceneListItem item in sceneLibrary)
     {
         if (item != activeScene)
         {
             item.isActive = false;
         }
         else
         {
             item.isActive = true;
         }
     }
 }
コード例 #5
0
        private IEnumerator LoadNewSceneAdditive(SceneListItem newScene, bool isActive, bool isGameplay)
        {
            if (!newScene.isLoaded)
            {
                AsyncOperation asyncOp;

                asyncOp = SceneManager.LoadSceneAsync(newScene.sceneName, LoadSceneMode.Additive);
                asyncOp.allowSceneActivation = false;

                yield return(MonitorLoadingOfScene(asyncOp));    //change status @90%

                asyncOp.allowSceneActivation = true;

                yield return(CheckIfLoadIsDone(asyncOp));
            }

            GetSceneAndIndexOfScene(newScene);  //only available when loaded
            SetActiveScene(newScene, isActive);
            SetSceneLoaded(newScene, true);
            SetSceneGameplay(newScene, isGameplay);
            UpdateListeners(newScene);
        }
コード例 #6
0
 private void UpdateListeners(SceneListItem sceneItem)
 {
     listenerManager.UpdateListeners(sceneItem.scene);
 }
コード例 #7
0
 private void SetSceneGameplay(SceneListItem item, bool isGameplay)
 {
     item.isGameplayScene = isGameplay;
 }
コード例 #8
0
 private void SetSceneLoaded(SceneListItem item, bool isLoaded)
 {
     item.isLoaded = isLoaded;
 }
コード例 #9
0
 private void UnloadScene(SceneListItem sceneToUnload)
 {
     onSceneUnloaded?.Invoke(sceneToUnload.sceneName);
     SetSceneLoaded(sceneToUnload, false);
     SceneManager.UnloadSceneAsync(sceneToUnload.sceneName);
 }
コード例 #10
0
 private void GetSceneAndIndexOfScene(SceneListItem item)
 {
     item.scene      = SceneManager.GetSceneByName(item.sceneName);
     item.sceneIndex = item.scene.buildIndex;
 }
コード例 #11
0
 public void CloseOptionsMenu()
 {
     SetActiveScene(lastActiveScene, true);
     lastActiveScene = menuScene;
 }
コード例 #12
0
 public void LoadOptionsMenu()
 {
     lastActiveScene = GetActiveScene();
     StartCoroutine(LoadNewSceneAdditive(menuScene, true, false));
 }