public void Exit() { LoggerManager.Instance().LogProcessFormat("Exit Scene Name = {0}", sceneItem.Name); OnExit(); ansyTasks.Clear(); userData = null; iId = -1; UIManager.Instance().CloseAllFrames(); EventManager.Instance().Clear(); InvokeManager.Instance().Clear(); for (int i = 0; i < sceneItem.AssetBundles.Count; ++i) { if (!string.IsNullOrEmpty(sceneItem.AssetBundles[i])) { AssetBundleManager.Instance().UnLoadAssetBundle(sceneItem.AssetBundles[i]); } } sceneItem = null; }
public Scene(SceneTable sceneItem) { this.sceneItem = sceneItem; this.iId = sceneItem.ID; }
public void Switch(int sid, Utility.VoidDelegate OnLoadedCallback) { SceneTable tb = SceneTableManager.instance.Find((uint)sid); if (tb == null) { Logger.instance.Error("找不到场景配置 : {0} !\n", sid); return; } table = tb; Done = false; mloader.Reset(); mloader.Push(table.name, ResourceCenter.AssetType.scene, null); _OnSceneInit(); mloader.CompletedCallBack = () => { Done = true; mSceneBgm = FMOD_StudioSystem.instance.GetEvent(tb.bgm); if (mSceneBgm != null) mSceneBgm.start(); if (Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.OSXEditor) { #region editor platform code GameObject[] allgos = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject)); foreach (GameObject gg in allgos) { Renderer[] allrds = gg.GetComponentsInChildren<Renderer>(); foreach (Renderer r in allrds) { foreach (Material mat in r.sharedMaterials) { if (mat != null && mat.shader != null) { string sname = mat.shader.name; //if (!mShaderDic.ContainsKey(sname)) //{ // Debug.Log(sname + "\n"); // mShaderDic.Add(sname, sname); //} mat.shader = Shader.Find(sname); } } } } if (RenderSettings.skybox != null) { RenderSettings.skybox.shader = Shader.Find(RenderSettings.skybox.shader.name); } #endregion } _OnSceneWasLoaded(); if (OnLoadedCallback != null) OnLoadedCallback(); }; }