public static void InvokeActiveSceneChangedEvent(SceneResInfoManager prog) { if (null != m_ActiveSceneChangedCallBack) { m_ActiveSceneChangedCallBack.Invoke(prog); } }
//主界面场景加载完毕回调 private void SetPrizeChestObjContainer(SceneResInfoManager info) { currentView = EMPrizeChestView.EMView_Main; //挂载主界面场景模型根节点,创建场景光效 if (chestObjContainer == null) { GameObject go = new GameObject(); go.name = "PrizeChestContainer"; chestObjContainer = go.transform; } //挂载宝箱模型根节点到场景上 chestObjContainer.SetParent(info.SceneRoot.transform); chestObjContainer.localPosition = mainViewChestPos; RefreshChest(); if (m_reaminingChestCount <= 0) { linkBtn.gameObject.SetActive(true); if (defaultBGEffect == null && chestObjContainer != null) { defaultBGEffect = new SceneEffectParamBase((int)ESceneEffectID.SE_PrizeChest_DefaultBG, chestObjContainer); SceneEffectManager.Instance.CreateSceneEffect(ref defaultBGEffect); } } chestPageObj.SetActive(true); closeBtn.gameObject.SetActive(true); bEnableClose = true; }
//奖励界面场景加载完毕回调 private void SetPrizeResultObjContainer(SceneResInfoManager info) { if (info == null || info.SceneRoot == null) { Debug.LogError("load scene 'TreasureBoxRoomView02' failed."); return; } currentView = EMPrizeChestView.EMView_Award; if (prizeResultObjContainer == null) { prizeResultObjContainer = info.SceneRoot.transform.FindChild("Scenes_Container"); if (prizeResultObjContainer == null) { GameObject go = new GameObject(); go.name = "prizeResultContainer"; prizeResultObjContainer = go.transform; //挂载奖励界面场景模型根节点 prizeResultObjContainer.SetParent(info.SceneRoot.transform); prizeResultObjContainer.localPosition = new Vector3(0, 0, 0); } } LoadPrizeResultEffectAndSetUIData(); }
private void SetRootNodeAfterLoadScene(SceneResInfoManager info) { if (m_wndView != null) { m_wndView.SetRootSceneNode(info); } }
public void SetRoomShowAfterLoadScene(SceneResInfoManager info) { if (m_wndView && m_wndView.SupportVoteFrame) { m_wndView.SupportVoteFrame.SelectTransForm = info.SceneRoot.transform; } }
private static void SetResolution(int _nNewWidth, int _nNewHeight, bool bFullScreen) { //全屏 if (bFullScreen && isSupportFullScreen) { Screen.SetResolution(_nNewWidth, _nNewHeight, false); screenPosition = new Rect(0, 0, _nNewWidth, _nNewHeight); //设定一个新的窗口风格 GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG); GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW); GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG); GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW); GameLogicAPI.SetWindowLong(Initialize.m_WindowHwnd, GWL_STYLE, NEW_LONG); GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW); } //非全屏 else { Screen.SetResolution(_nNewWidth, _nNewHeight, false); GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, 0, 0, 0, 0, 0x0001 | 0x0002); GameLogicAPI.SetWindowPos(Initialize.m_WindowHwnd, HWND_NORMAL, 0, 0, 0, 0, 0x0001 | 0x0002 | 0x0020); } if (USpeedUI.UISystem.Instance) { USpeedUI.UISystem.Instance.SetResolution(_nNewWidth, _nNewHeight); } SceneResInfoManager.API_OnResolutionChanged(_nNewWidth, _nNewHeight); }
private void SceneLoadFinish(SceneResInfoManager manager) { SetVisible(true); if (m_wndView) { m_wndView.SceneRoot = manager.SceneRoot.transform; } }
public void Awake() { isOnGameRuning = true; m_WindowHwnd = GameLogicAPI.getMainWindHwnd(); if (!Application.isEditor) { GameLogicAPI.SetWindowText(Initialize.m_WindowHwnd, "泰坦-大地之子,勇往直前"); } InitDoTween(); GameLogicAPI.OpenLog(); if (AssetBundleManager.isVaild) { LoadingWaitngResNode = AssetBundleManager.GetAssets(AssetType.Asset_Prefab, "fa32d80346317d445bf6bdd4f1b4c5da", true); if (!ResNode.isNullOrEmpty(LoadingWaitngResNode)) { LoadingWaitngResNode.InstanceMainRes(); } } DontDestroyOnLoad(gameObject); Type[] types = new Type[] { typeof(Trace), }; CreateModulesSync(types); if (Time.timeScale < 0.01) { Time.timeScale = 1f; } mainCam = Camera.main; Instance = this; myTransform = this.transform; SoliderTarget = myTransform.FindChild("SoldierTarget").gameObject; Hero_Camera = Initialize.mainCam.gameObject; TargetFrame = myTransform.FindChild("TargetFrame").gameObject; Second_Camera = myTransform.FindChild("Second_Camera").gameObject; SecondTarget = Second_Camera.transform.FindChild("SecondTarget").gameObject; CamInitPos = Hero_Camera.transform.position; CamInitQua = Hero_Camera.transform.rotation; SetState(InitializeState.Init); SceneManager.RegisterSceneLoadFinishEvent(SceneLoadFinish); SceneManager.RegisterSceneLoadStartEvent(SceneLoadStart); SceneResInfoManager.RegisterActiveSceneChangedEvent(ActiveSceneChanged); UISystem.OnResolutionChanged += DoMouseLockInModeType; //将显示层配置文档初始化提前避免启用多线程时配置文档未初始化 //ViewConfigManager.Init(); }
public static void API_UnLoadLevel(string sceneName) { SceneResInfoManager mr = null; if (LoadedScene_ResTable.TryGetValue(sceneName, out mr)) { ResNode.DestroyRes(ref mr.SceneRoot); LoadedScene_ResTable.Remove(sceneName); } }
public static SceneResInfoManager API_GetSceneResManager(string sceneName) { SceneResInfoManager result = null; if (!LoadedScene_ResTable.TryGetValue(sceneName, out result)) { Debug.LogWarning("找不到场景管理器:" + sceneName); } return(result); }
public void SetRoomShowAfterLoadScene(SceneResInfoManager info) { if (m_wndView) { m_wndView.CommomFrame.SkinModelFrame.SelectTransForm = info.SceneRoot.transform; m_wndView.CommomFrame.UpstarBtnFrame.SelectTransForm = info.SceneRoot.transform; m_wndView.EffectFrame.SelectTransForm = info.SceneRoot.transform; m_wndView.SetHeroSkinModel(HeroDetailViewData.Instance.nHeroID); } }
private static void API_ConfirmLoadedSceneRes(SceneResInfoManager Res) { if (!AssetBundleManager.isBundleScene(Res.sceneName)) { Debug.LogError("发现一类场景资源超级BUG!!!!!"); return; } if (LoadedScene_ResTable.ContainsKey(Res.sceneName)) { Debug.LogError("发现二类场景资源超级BUG!!!!!"); return; } LoadedScene_ResTable.Add(Res.sceneName, Res); AssetBundleManager.ConfirmLoadedScene(Res.sceneName); }
public static void Init() { //InitUGUI(); if (bInit) { return; } bInit = true; //如果加载配置失败,则使用默认的配置 bool bLoadConfig = LoadConfig(); if (!MonoInstance) { MonoInstance = new GameObject(); MonoInstance.AddComponent <ImageSetting>().hideFlags = HideFlags.NotEditable; MonoInstance.name = "ImageSetting"; DontDestroyOnLoad(MonoInstance); } InitResolution(); //有开启自动调整,参数设置为预设的值 if (bLoadConfig /*&& AutoAdjustQuality > 0*/) { SetImageQuality(currData.currImageQuality); } else { //加载配置失败就使用默认配置 if (bLoadConfig) { //没有开启自动调整,直接应用参数,采用玩家的值 Apply(true); } else { SetDefaultSetting(); } } ImageEffects.ImageEffectManager.AdvanceImangeEffectEnabled = currData.AdvanceImageEffectEnabled == 1; //ApplyUIData(); GameFrameManager.FpsMonitor.SubScribeProfileEvent(OnFPSChange); SceneResInfoManager.RegisterActiveSceneChangedEvent(ActiveSceneChaned); SceneResInfoManager.RegsiterGetImageSettignData(GetData); }
IEnumerator LoadWarSupportPlayerViewScene_Impl(System.Action <SceneResInfoManager> callBack) { if (AssetBundleManager.isCanLoadLevel(WarSupportPlayerViewSceneName)) { if (SceneResInfoManager.CurrentActiveInstance) { backOldSupportSceneName = SceneResInfoManager.CurrentActiveInstance.sceneName; } AssetBundleManager.LoadLevelAdditive(WarSupportPlayerViewSceneName); DeActiveScene(backOldSupportSceneName); /*为什么要两帧??因为一个是本帧,另一个才是下一帧..*/ yield return(new WaitForEndOfFrame()); yield return(new WaitForFixedUpdate()); SceneResInfoManager manager = SceneResInfoManager.API_GetSceneResManager(WarSupportPlayerViewSceneName); ImageSetting.Apply(true); if (manager) { ActiveScene(WarSupportPlayerViewSceneName); manager.SceneRoot.transform.SetPosition(Vector3.one * -999); } InvokeSceneActiveChangeEvent(WarSupportPlayerViewSceneName); isLoadingWarSupportPlayerViewScene = false; if (isElaryUnLoadSupportScene) { isElaryUnLoadSupportScene = false; UnLoadWarSupportPlayerViewScene(); yield break; } if (null != callBack) { callBack(manager); } } else { isLoadingWarSupportPlayerViewScene = false; } }
public static void DeActiveScene(string sceneName) { if (sceneName.Equals(string.Empty)) { return; } SceneResInfoManager manager = SceneResInfoManager.API_GetSceneResManager(sceneName); if (!manager) { return; } if (manager) { manager.DeActive(); } }
public void Active() { LastActiveInstance = CurrentActiveInstance; CurrentActiveInstance = this; //ImageEffects.ImageEffectManager.API_SetDirty(SceneCamera); if (SceneCamera) { SceneCamera.gameObject.SetActive(true); m_currentSceneCamera = SceneCamera; InvokeActiveSceneChangedEvent(this); } if (SceneLightRoot) { SceneLightRoot.SetActive(true); } ApplyColorCompensationFactor(); ApplyEnvironmentLighting(); m_IsActive = true; }
public void SetRootSceneNode(SceneResInfoManager info) { if (info != null) { for (int i = 0; i < m_heroModleArray.Length; ++i) { m_heroModleArray[i] = null; } SelectTransForm = info.SceneRoot.transform; SetHeroMountPoint(); LoadStandbyEffect(); LoadLifeHero(); prizeFrame.SetData(); SetReplaceBtnVisible(); LoadAllAddHeroOrUpSatrEffect(); } else { Debug.LogError("(" + SceneManager.DestinedHeroViewSceneName + ")场景加载失败!"); return; } }
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(); }
private void DrawOptimtizedControlPlane() { Rect rt = new Rect(0, Screen.height * 0.6f, 200, 200); Rect rt1 = new Rect(0, 0, 200, Screen.height); OptimtizedControlScrollPos = GUI.BeginScrollView(rt, OptimtizedControlScrollPos, rt1); GUILayout.BeginVertical("Box"); GUILayout.Label("调试面板"); GUILayout.Space(5.0f); OptimitzedControlPlane.Instance.EnabledNormalFloatFont = GUILayout.Toggle(OptimitzedControlPlane.Instance.EnabledNormalFloatFont, "开启普通飘字"); OptimitzedControlPlane.Instance.EnabledLightingEffect = GUILayout.Toggle(OptimitzedControlPlane.Instance.EnabledLightingEffect, "开启光效"); LightingEffectFactory.ClosedOptimiezed = GUILayout.Toggle(LightingEffectFactory.ClosedOptimiezed, "关闭光效优化"); //if (GUILayout.Button("UI调试面板")) //{ // UIWindowDebugPlane.OpenUIWindowDebugPlane(); //} if (GUILayout.Button("打印光效信息")) { Trace.Log("-------------------EffectDebugInfo------------------------"); foreach (string s in EntityViewCommandHandler.lightingEffectDebugInfo) { Trace.Log(s); } Trace.Log("-------------------EffectDebugInfo------------------------"); SkinManager.TraceCullingList(); System.Diagnostics.Process.Start(Initialize.LogFileName); } if (GUILayout.Button("刷新场景碰撞体")) { SceneResInfoManager.RefershAllCollider(); } if (GUILayout.Button("刷新人物碰撞体")) { EntityFactory.RefershPlayerCollider(); } if (SceneResInfoManager.ShowMeshColliderFlags) { if (GUILayout.Button("关闭碰撞体显示")) { SceneResInfoManager.ShowMeshColliderFlags = false; SceneResInfoManager.HideMeshCollider(); } } else { if (GUILayout.Button("打开碰撞体显示")) { SceneResInfoManager.ShowMeshColliderFlags = true; SceneResInfoManager.ShowMeshCollider(); } } if (!OptimitzedControlPlane.Instance.EnabledImageEffects) { if (GUILayout.Button("开启后处理")) { OptimitzedControlPlane.Instance.EnabledImageEffects = true; foreach (ImageEffects.ImageEffectManager ins in ImageEffects.ImageEffectManager.ImageEffectManagerTable.Values) { if (ins) { ins.enabled = true; } } } } else { if (GUILayout.Button("关闭后处理")) { OptimitzedControlPlane.Instance.EnabledImageEffects = false; foreach (ImageEffects.ImageEffectManager ins in ImageEffects.ImageEffectManager.ImageEffectManagerTable.Values) { if (ins) { ins.enabled = false; } } } } if (GUILayout.Button("输出pickCount信息")) { Trace.Log("--------------pickcount Debug info:-----------"); ICollection <U3D_Render.EntityView> heros = EntityFactory.GetPlayerList(); foreach (U3D_Render.EntityView hero in heros) { if (hero.StateMachine) { Trace.Log(hero.StateMachine.name + " " + hero.StateMachine.pickableCount); } } System.Diagnostics.Process.Start(Initialize.LogFileName); } if (!InputManager.foceOpenInput) { if (GUILayout.Button("强制开启输入")) { InputManager.foceOpenInput = true; } } else { if (GUILayout.Button("强制关闭输入")) { InputManager.foceOpenInput = false; } } if (!OptimitzedControlPlane.Instance.EanableUI) { if (GUILayout.Button("开启UI")) { OptimitzedControlPlane.Instance.EanableUI = true; USpeedUI.UISystem.Instance.OpenUI(); } } else { if (GUILayout.Button("关闭UI")) { OptimitzedControlPlane.Instance.EanableUI = false; USpeedUI.UISystem.Instance.CloseUI(); } } if (GUILayout.Button("取消帧数限制")) { QualitySettings.vSyncCount = 0; Application.targetFrameRate = 0; } if (GUILayout.Button("删除所有UI")) { if (USpeedUI.UISystem.Instance) { GameObject.Destroy(USpeedUI.UISystem.Instance.gameObject); } if (USpeedUI.Blood.UBloodManager.Instance) { GameObject.Destroy(USpeedUI.Blood.UBloodManager.Instance.gameObject); } if (USpeedUI.UTopNameManager.Instance) { GameObject.Destroy(USpeedUI.UTopNameManager.Instance.gameObject); } } if (AssetBundleManager.isOnRunTimeMode) { if (GUILayout.Button("卸载所有资源(不可逆)")) { AssetBundleManager.Clear(); } } if (!Application.isEditor) { if (GUILayout.Button("资源调试面板")) { DrawAssetDebugInfo = true; } } GUILayout.EndVertical(); GUI.EndScrollView(); }
public static void UnLoadAllLevel() { AssetBundleManager.UnLoadAllSceneBundle(); SceneResInfoManager.API_UnLoadAllLevel(); }
public static void UnLoadLevel(string sceneName) { SceneResInfoManager.API_UnLoadLevel(sceneName); AssetBundleManager.UnLoadSceneBundle(sceneName); }
private static void ActiveSceneChaned(SceneResInfoManager manager) { ApplySceneImageSettingWhenAfterLoadingScene(); }
/// <summary> /// 应用场景里的图像设置,应当在每次场景加载的时候都调用一次,并且强制调用 /// </summary> public static void ApplySceneImageSetting(SceneResInfoManager Instance, bool bForce = false) { SceneResInfoManager [] InstanceList = new SceneResInfoManager[] { Instance }; ApplySceneImageSetting(InstanceList, bForce); }
public void OnDestroy() { UnLoadTerrain(); ImageEffects.ImageEffectManager.API_ClearSceneCamera(SceneCamera); ClearSceneQuadTree(); foreach (SceneResInfo res in ResInfoList) { if (!res) { continue; } res.OnClear(SceneCamera); } foreach (SceneResInfo res in GrassResInfoList) { if (!res) { continue; } res.OnClear(SceneCamera); } foreach (SceneLightInfo res in LightInfoList) { if (!res) { continue; } res.OnClear(SceneCamera); } foreach (SceneColliderInfo res in ColliderInfoList) { if (!res) { continue; } res.OnClear(SceneCamera); } foreach (SceneEffectInfo res in EffectInfoList) { if (!res) { continue; } res.OnClear(SceneCamera); } //如果当前场景被删除,当前场景的实例则变为上一个场景 if (CurrentActiveInstance == this) { CurrentActiveInstance = LastActiveInstance; } AllInstance.Remove(this); UnLoadSkyBoxTexture(); ResInfoList.Clear(); LightInfoList.Clear(); ColliderInfoList.Clear(); EffectInfoList.Clear(); StopAllCoroutines(); OcclusCullingClear(); ClearRenderMaterial(); }
public void Awake() { LoadTerrain(); API_ConfirmLoadedSceneRes(this); LastActiveInstance = CurrentActiveInstance; CurrentActiveInstance = this; AllInstance.Add(this); InvokeActiveSceneChangedEvent(this); ApplyColorCompensationFactor(); SceneCamera.nearClipPlane = 0.1f; SceneCamera.farClipPlane = Mathf.Min(SceneCamera.farClipPlane, 6000); if (SecondSunLight) { OrginalSecondSunLightEnabled = SecondSunLight.enabled; SecondSunLight.enabled = false; } if (ThirdSunLight) { OrginalThirdSunLightEnabled = ThirdSunLight.enabled; ThirdSunLight.enabled = false; } if (ScenereOcclusColliderRoot) { ScenereOcclusColliderRoot.SetActive(GoablEnabledOcclusCulling); } SceneResInfo.StartPreLoad(); foreach (SceneResInfo res in ResInfoList) { if (!isVaildRes(res)) { continue; } res.hostResManager = this; PushRenderMaterial(res.hostRender); res.OnAwake(SceneCamera); if (res.OcclusCullingCollider) { transform_ResTable.Add(res.OcclusCullingCollider.transform, res); } } foreach (SceneResInfo res in GrassResInfoList) { if (!isVaildGrassRes(res)) { continue; } res.isGrass = true; res.hostResManager = this; PushRenderMaterial(res.hostRender); res.OnAwake(SceneCamera); } foreach (SceneLightInfo res in LightInfoList) { if (!isVaildLight(res)) { continue; } res.OnAwake(SceneCamera); } foreach (SceneColliderInfo res in ColliderInfoList) { if (!isVaildCollider(res)) { continue; } res.OnAwake(SceneCamera); } foreach (SceneEffectInfo res in EffectInfoList) { if (!isVaildEffect(res)) { continue; } res.OnAwake(SceneCamera); } }
public static void ClearOnAppQuit() { ClearColliderDebugData(); LastActiveInstance = null; CurrentActiveInstance = null; }
void ActiveSceneChanged(SceneResInfoManager cam) { Initialize.mainCam = cam.SceneCamera; }