public virtual void Load(string battleID = "") { if (IsInBattle) { CLog.Error("正处于SubBattle中"); return; } TDBaseBattleData tempData = TDLuaMgr.Get <TData>(battleID); if (tempData == null) { CLog.Error("没有这个战场:{0}", battleID); return; } SubBattleCoroutine.Kill(); CurData = tempData.Copy <TData>(); if (CurData != null) { BattleID = tempData.TDID; CurData.OnBeAdded(SelfBaseGlobal); BattleCoroutine.Run(_LoadBattle()); } else { CLog.Error("Battle not found !error id=" + battleID); } }
public virtual void UnLoad() { if (!IsInBattle) { CLog.Error("没有加载SubBattle"); return; } SubBattleCoroutine.Kill(); BattleCoroutine.Run(_UnLoadBattle(() => { SceneManager.SetActiveScene(BaseGlobal.BattleMgr.SceneSelf); BattleCoroutine.Run(BackToBattle()); })); }
// 加载战场 // 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; }