public static void ClearBackWindos() { mBackWindos.Clear(); foreach (var k in mPoolWindos) { k.Value.CloseClear(); FEngineManager.DeletObject(k.Value); } mPoolWindos.Clear(); }
public void DeletObject(UnitObject uo) { FEngineManager.DeletObject(uo); }
IEnumerator PlayFun(GameProgress gp, BaseLoad bl) { ScriptsTime.BeginTag("_loadScene"); mLoadPercent.GoOn(0, ""); if (bl != null) { yield return(bl.PlayStart()); } else { yield return(0); } FEngineManager.CloseWindos(); bool isPack = FEConfigure.mIsNoPack; if (mIsFirst) { mIsFirst = false; if (isPack) { mLoadPercent.GoOn(0.3f); BundleManager._isLoadComplete = true; } else { ScriptsTime.BeginTag("_LoadAssetBundles"); //进场景第一次加载资源初始化 mLoadPercent.SetKD("Detection_Resources"); mLoadPercent.Reset(""); yield return(BundleManager.instance.CopyStreamingAsset(mLoadPercent.CreateBranch(1), FEngineManager.GetFBEngine().GetBundleAskCall())); mLoadPercent.SetKD("Loading_Resources"); mLoadPercent.Reset(""); yield return(BundleManager.instance.LoadAssetBundles("", mLoadPercent.CreateBranch(0.95f))); ScriptsTime._ShowTimeTag("_LoadAssetBundles", "加载资源消耗"); } ScriptsTime.BeginTag("_LoadManager"); yield return(FEngineManager.GetFBEngine().LoadManager()); ScriptsTime._ShowTimeTag("_LoadManager", "加载单件管理器"); } string relaySceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; //逻辑处理 EventManager.instance.Send(LoadSceneManager.LoadEvent, LoadSceneManager.LoadType.LT_BeginMask, mCurLoadMode); if (bl != null) { yield return(bl.PlayResoureOver()); } ScriptsTime.BeginTag("_UnLoadSysBundles"); mLoadPercent.SetKD("LoadingScene"); mLoadPercent.GoOn(0.7f); LoadSceneManager.instance.LoadDirectScene(GameProgress.GP_NONE); if (!isPack) { FEngineManager.GetFBEngine().PreLoadObject(relaySceneName, false); } //开启异步加载销毁 // lua gc FEngineManager.GetFBEngine().LoadFrontScene(gp); ScriptsTime._ShowTimeTag("_UnLoadSysBundles", "卸载当前场景消耗"); ScriptsTime.BeginTag("_LoadSceneAsy"); yield return(LoadSceneManager.instance.LoadSceneAsy(gp)); ScriptsTime._ShowTimeTag("_LoadSceneAsy", "切换场景消耗"); mLoadPercent.SetKD("Preloading"); mLoadPercent.GoOn(0.9f); string newSceneName = LoadSceneManager.instance.GetSceneName(gp); if (!isPack) { Timer_Mix mix = FEngineManager.GetFBEngine().PreLoadObject(newSceneName, true); if (mix != null) { ScriptsTime.BeginTag("_PreLoadObject"); if (!mix.IsOver) { var pre = mLoadPercent.CreateBranch(1, false); pre.SetTimece(mix.MaxNum); int lastNum = -1; while (!mix.IsOver) { if (lastNum != mix.CurNum) { pre.GoOn(mix.CurNum.ToString() + "/" + mix.MaxNum.ToString()); lastNum = mix.CurNum; } yield return(0); } } ScriptsTime._ShowTimeTag("_PreLoadObject", "预加载消耗"); } } mLoadPercent.Over(); if (mLastLoadMode != null) { mLastLoadMode.PlayLoad(LoadSceneManager.LoadType.Lt_Back); } mCurLoadMode.PlayLoad(LoadSceneManager.LoadType.Lt_EnterMask); EventManager.instance.Send(LoadSceneManager.LoadEvent, LoadSceneManager.LoadType.Lt_EnterMask, mCurLoadMode); if (bl != null) { yield return(bl.PlayEnd()); FEngineManager.DeletObject(bl); } else { yield return(0); } yield return(0); CloseMySelf(true); mCurLoadMode.PlayLoad(LoadSceneManager.LoadType.Lt_Enter); EventManager.instance.Send(LoadSceneManager.LoadEvent, LoadSceneManager.LoadType.Lt_Enter, mCurLoadMode); ScriptsTime._ShowTimeTag("_loadScene", "加载场景" + newSceneName + "总时间"); }
internal static void _CloseWindos(string name = "", string curOpenName = "", WinShowType type = WinShowType.WT_Normal) { if (name == "" && curOpenName == "") { ClearBackWindos(); } bool isFirst = true; for (int i = mActivePlane.Count - 1; i >= 0; i--) { if (name == "" || mActivePlane[i].HandleID == name) { BasePlane up = mActivePlane[i]; if (GetAutoIsByClose(up.nUiType) || name != "") { //卸载代码 if (IsHaveSameWinType(type, WinShowType.WT_Back)) { WindosUIData w = new WindosUIData(); w.keyWindosName = curOpenName; w.windosName = up.PoolName; w.showType = up.mWinShowType; w.arg = up.mArgs; if (isFirst) { mBackWindos.Add(w); isFirst = false; } else { if (mBackWindos.Count > 0) { WindosUIData widn = mBackWindos[mBackWindos.Count - 1]; widn.nextUIData.Add(w); } } } mActivePlane.RemoveAt(i); up.SetDelayEvent(() => { if (IsHaveSameWinType(type, WinShowType.WT_Pool)) { PushUIPool(up); } else { up.CloseClear(); FEngineManager.DeletObject(up); } if (IsHaveSameWinType(type, WinShowType.WT_Reset)) { if (mActivePlane.Count > 0) { BasePlane rplane = null; for (int p = mActivePlane.Count - 1; p >= 0; p--) { var plane = mActivePlane[p]; if (plane.nUiType == UIWIND_TYPE.UI_NORMAL) { rplane = plane; break; } } if (rplane != null) { _CloseWindos(rplane.HandleID); var lastWinShow = rplane.mWinShowType; var newPlane = ShowWindos(rplane.PoolName, WinShowType.WT_NoClose, rplane.mArgs); if (newPlane != null) { newPlane.mWinShowType = lastWinShow; } } } } }, name != ""); } } } }