public IEnumerator FlowScene(SceneFlowEvent flowBody) { if (flowBody.SceneMode == LoadSceneMode.Additive) { //不会黑屏..但是在卸载前会有两个场景共存..内存会很大 yield return(service.LoadSceneAsync(flowBody.LoadSceneName, flowBody.SceneMode, flowBody.ExtraBindings)); if (!string.IsNullOrEmpty(flowBody.UnloadSceneName)) { yield return(service.UnloadSceneAsync(flowBody.UnloadSceneName, true)); } } else if (flowBody.SceneMode == LoadSceneMode.Single) { //如果是Single会在加载之前会卸载其他所有的场景,为了保证上个场景全部清理完毕后再销毁..所以先执行 //但这个方法有个问题..切换场景会短暂黑屏 if (!string.IsNullOrEmpty(flowBody.UnloadSceneName)) { yield return(service.UnloadSceneAsync(flowBody.UnloadSceneName)); //因为是先卸载的..所以这个可以是null.. App.SceneContainer = null; } yield return(service.LoadSceneAsync(flowBody.LoadSceneName, flowBody.SceneMode, flowBody.ExtraBindings)); } if (flowBody.CallBack != null) { flowBody.CallBack.Invoke(); } //立即进行垃圾回收 GC.Collect(); GC.WaitForPendingFinalizers();//挂起当前线程,直到处理终结器队列的线程清空该队列为止 GC.Collect(); }
private void SubscribeOnExitButton() { exitButton.onClick.AddListener(() => { StartCoroutine(sceneService.LoadSceneAsync(SceneType.Menu)); }); }
private void Start() { SetPauseMenuVisibility(false); continueButton.onClick.AddListener(() => { Time.timeScale = 1f; OnContinueButtonPressed?.Invoke(); SetPauseMenuVisibility(false); }); pauseButton.onClick.AddListener(() => { Time.timeScale = 0f; OnPauseButtonPressed?.Invoke(); SetPauseMenuVisibility(true); }); exitButton.onClick.AddListener(() => { Time.timeScale = 1f; OnExitButtonPressed?.Invoke(); StartCoroutine(sceneService.LoadSceneAsync(SceneType.Menu)); }); }
/// <summary> /// Initialize Intro level /// </summary> private void InitGame() { playButton.onClick.AddListener(() => { StartCoroutine(sceneService.LoadSceneAsync(nextSceneType)); }); settingsButton.onClick.AddListener(() => { canvasSwitcher.DelayedOpenTable(canvasDisabler); }); #if PLATFORM_ANDROID quitButton.onClick.AddListener(Application.Quit); #endif }