// 加载战场 // readData:是否读取数据 IEnumerator <float> _LoadBattle() { yield return(Timing.WaitForOneFrame); Callback_OnBattleLoadStart?.Invoke(); float startTime = Time.realtimeSinceStartup; IsLoadingBattle = true; IsLoadBattleEnd = false; IsGameStart = false; //开始Tip SubBattleCoroutine.Run(_RandTip()); //开始加载 Callback_OnBattleLoad?.Invoke(); yield return(Timing.WaitForOneFrame); OnLoadSceneStart(); Callback_OnLoadingProgressChanged?.Invoke("Start to load", 0.0f); //演示几秒,给UI渐变的时间 yield return(Timing.WaitForSeconds(DelayLoadSceneTime)); //加载场景 SceneName = CurData.GetRawSceneName(); SceneAsset = GRMgr.LoadScene(SceneName); while (!SceneAsset.IsDone) { yield return(Timing.WaitForOneFrame); Callback_OnLoadingProgressChanged?.Invoke("LoadingScene", SceneAsset.Progress * 0.8f); } //延时一帧 yield return(Timing.WaitForOneFrame); SceneManager.SetActiveScene(SceneManager.GetSceneByName(SceneName)); Callback_OnBattleLoadedScene?.Invoke(); //这里必须延迟一帧,等待UI创建,注册事件 yield return(Timing.WaitForOneFrame); GC.Collect(); Callback_OnLoadingProgressChanged?.Invoke("GC", 1.0f); IsLoadingBattle = false; //场景加载结束 Callback_OnBattleLoaded?.Invoke(); IsLoadBattleEnd = true; Callback_OnGameStart?.Invoke(); IsGameStart = true; }