IEnumerator WaitToDestoryAllObjects() { while (BibaSceneStack.Count > 0) { var lastMenuStateGO = BibaSceneStack.GetTopGameObjectForTopMenuState(); var lastMenuState = BibaSceneStack.Pop(); if (lastMenuState is SceneMenuState) { GameObject.Destroy(lastMenuStateGO); while (lastMenuStateGO != null) { yield return(null); } SceneManager.UnloadScene(lastMenuState.SceneName); } else { ToggleObjectMenuStateSignal.Dispatch(lastMenuState as ObjectMenuState, false); } } Resources.UnloadUnusedAssets(); Release(); }
void RemoveLastGameView() { var lastMenuStateGO = BibaSceneStack.GetTopGameObjectForTopMenuState(); var lastMenuState = BibaSceneStack.Pop(); if (lastMenuState is SceneMenuState) { Retain(); new Task(WaitTilObjectDestroy(lastMenuState, lastMenuStateGO), true); } else { ToggleObjectMenuStateSignal.Dispatch(lastMenuState as ObjectMenuState, false); } }