private void GameQuit() { DG.Tweening.DOTween.isQuitting = true; SaveUnityTXTLog(); InputManager.Clear(); EntityFactory.Instance.Clear(); UTopNameManager.Instance.Clear(); USpeedUI.Blood.UBloodManager.Instance.Clear(); SoundManager.Clear(); SkinManager.Clear(); PrefabManager.Clear(); ImageSetting.Clear(); if (AnimationEffectFactory.Instance) { AnimationEffectFactory.Instance.UnLoadAnimEffectData(); } if (LightingEffectFactory.Instance) { LightingEffectFactory.Instance.ClearCache(); LightingEffectFactory.Instance.ClearWhenGameEnd(); } if (Application.isEditor) { Shader.globalMaximumLOD = int.MaxValue; } ImageEffectManager.API_GameEnd(); SafeZoneEffectManager.Clear(); //清除资源 AssetBundleManager.Clear(); SceneResInfoManager.ClearOnAppQuit(); Resources.UnloadUnusedAssets(); //GC.Collect(); }
// Update is called once per frame public void Update() { UpdateDeviceLost(); if (!mainCam) { mainCam = Camera.main; } // 帧 GameFrameManager.OnUpdate(); // 定时器 TimerManager.OnUpdate(); DoTask(); // 当前正在载入地图,不要处理消息 if (loading != null) { if (!loading.isDone) { ViewEventHelper.Instance.SendCommand(GameLogicDef.GVIEWCMD_PROGRESSING, (int)(loading.progress * 100)); return; } else { loading = null; ViewEventHelper.Instance.SendCommand(GameLogicDef.GVIEWCMD_PROGRESSING, 100); Trace.Log("load level asyn ok!"); } } if (bCreated) { GameLogicAPI.onFrameUpdate(); } FuntionShortCutCtrl nFunctionCtr = FuntionShortCutCtrl.GetInstance(); if (InputManager.Raw_GetKeyUp(nFunctionCtr.GetKeyCodeByIndex(FuntionShortCutSlotIndex.ControlTraceOpen))) { if (!string.IsNullOrEmpty(LogFileName)) { Process.Start(LogFileName); } } SkinManager.OnUpdate(); SafeZone.Update(); SafeZoneEffectManager.Update(); if (isNeedToQuit) { bForbidQuit = false; Application.Quit(); } if (NeedToReStart) { enabled = false; NeedToReStart = false; ReStartApplication(); return; } GUIDE.GuideManager.Update(); // 通知逻辑层处理消息 //ViewEventHelper.Instance.SendCommand(GameLogicDef.GVIEWCMD_FRAME_UPDATE); }
/// <summary> /// 创建通用逻辑模块,主场景和战斗场景均使用,依赖配置表,通常情况下需要更新资源后再执行 /// </summary> public IEnumerator CreateEnumerator() { bCreated = false; Type[] types = new Type[] { typeof(AssetSystem), typeof(ShaderLib), typeof(SceneManager), typeof(NatureManager), typeof(WarFogManager), }; CreateModulesAsyn(types); //wait another coroutine finish while (true) { yield return(new WaitForEndOfFrame()); bool bOK = (CreatingModules.Count == 0); if (bOK) { break; } } yield return(new WaitForSeconds(0.1f)); if (!Application.isEditor && System.IO.File.Exists("BreakPoint.txt")) { GameUtil.MsgBox(m_WindowHwnd, "挂断点", "调试", 0); } if (!RenderViewAPI.Start()) { Trace.LogError("Game Start Service failure"); yield break; } Trace.Log("Game Start Service successed"); // 初始化 gameObject.AddComponent <GameViewCommandHandler>(); OnDeviceStateChage += OnDeviceStateChange; // 初始化游戏接口 IntPtrHelper helper = new IntPtrHelper(); //GameLogicAPI.Start(ASpeedGame.Data.GameSettingsXml.GameSettingsXmlManager.Instance.GameSettingsModel.enableMultiThread.AValue, // helper.toPtr(ref RenderViewAPI.g_RenderView)); GameLogicAPI.Start(helper.toPtr(ref RenderViewAPI.g_RenderView)); yield return(new WaitForSeconds(1.0f)); PrintTickCheck("初始化逻辑层API,至少等了1秒", CostThreshold_Lv1, _bStart: true); // 显示层配置价值 ViewConfigManager.Init(); PrintTickCheck("ViewConfigManager.Init"); //资源是要配置初始化 AssetBundleManager.Init(); PrintTickCheck("AssetBundleManager.Init"); LogicDataCenter.Init(); PrintTickCheck("LogicDataCenter.Init"); ImageSetting.Init(); PrintTickCheck("ImageSetting.Init"); ImageEffectManager.API_GameStart(); PrintTickCheck("ImageEffectManager.Init"); //GameViewCommandHandler.Instance.Start(); MouseCursorManager.Instance.InitMouseCursorManager(); PrintTickCheck("MouseCursorManager.Init"); // 初始化实体接口,依赖上面的物件管理器所以顺序不能换 EntityFactory.Init(); PrintTickCheck("EntityFactory.Init"); PrefabManager.Init(); PrintTickCheck("PrefabManager.Init"); SkinManager.Init(); PrintTickCheck("SkinManager.Init"); SoundManager.Init(); PrintTickCheck("SoundManager.Init"); UISystem.Init(); PrintTickCheck("UISystem.Init"); UTopNameManager.Init(); PrintTickCheck("UTopNameManager.Init"); USpeedUI.Blood.UBloodManager.Init(); PrintTickCheck("UBloodManager.Init"); InputManager.Init(); PrintTickCheck("InputManager.Init"); Effect.EffectNode.InitTargetCache(); PrintTickCheck("Effect.EffectNode.InitTargetCache.Init"); GUIDE.GuideManager.Init(); PrintTickCheck(" GUIDE.GuideManager.Init"); SceneEffectManager.Init(); PrintTickCheck("SceneEffectManager.Init"); if (LightingEffectFactory.Instance) { LightingEffectFactory.Instance.InitWhenGameStart(); } PrintTickCheck("LightingEffectFactory.Init"); SafeZoneEffectManager.Init(); PrintTickCheck("SafeZoneEffectManager.Init"); ImageSetting.TraceSettings(); bCreated = true; List <string> argList = new List <string>(); argList.AddRange(System.Environment.GetCommandLineArgs()); CkeckUpdateOk(ref argList); PrintTickCheck("CkeckUpdateOk"); CheckMultclient(); PrintTickCheck("CheckMultclient"); StageManager.Init(); AssetBundleManager.DeleteAssets(ref LoadingWaitngResNode, true); }