Esempio n. 1
0
 public ManualYieldInstruction UnloadSceneController(SceneControllerToken token)
 {
     if (token == null)
     {
         return(null);
     }
     if (tokensMarkedForDeath.Contains(token))
     {
         Debug.LogError("Token is marked for death!");
         return(null);
     }
     if (token.keepWaiting)
     {
         Debug.LogError("Token is not loaded!");
         return(null);
     }
     if (loadedControllers.ContainsKey(token.guid))
     {
         ManualYieldInstruction disposeManualYieldInstruction = GetDisposableUI(token).Dispose();
         tokensMarkedForDeath.Add(token);
         RunCoroutine.Instance.StartCoroutine(WaitForDisposeToFinish(disposeManualYieldInstruction, token));
         return(disposeManualYieldInstruction);
     }
     return(null);
 }
Esempio n. 2
0
        public IEnumerator WaitForDisposeToFinish(ManualYieldInstruction manualYield, SceneControllerToken uiToken)
        {
            yield return(manualYield);

            tokensMarkedForDeath.Remove(uiToken);
            loadedControllers.Remove(uiToken.guid);
            SceneManager.UnloadSceneAsync(uiToken.scene);
        }