Exemple #1
0
        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);
            }
        }
Exemple #2
0
 public virtual void UnLoad()
 {
     if (!IsInBattle)
     {
         CLog.Error("没有加载SubBattle");
         return;
     }
     SubBattleCoroutine.Kill();
     BattleCoroutine.Run(_UnLoadBattle(() =>
     {
         SceneManager.SetActiveScene(BaseGlobal.BattleMgr.SceneSelf);
         BattleCoroutine.Run(BackToBattle());
     }));
 }
Exemple #3
0
        // 加载战场
        // 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;
        }