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); }
public IEnumerator WaitForDisposeToFinish(ManualYieldInstruction manualYield, SceneControllerToken uiToken) { yield return(manualYield); tokensMarkedForDeath.Remove(uiToken); loadedControllers.Remove(uiToken.guid); SceneManager.UnloadSceneAsync(uiToken.scene); }