/// <summary> /// 释放场景资源。 /// </summary> public void UnloadScene(Action callBack) { if (m_currentMap != null) { try { BillboardViewManager.Instance.Clear(); MogoFXManager.Instance.RemoveAllShadow(); } catch (Exception ex) { Debug.LogException(ex); } foreach (var item in m_sceneObjects) { //AssetCacheMgr.UnloadAsset(item); AssetCacheMgr.ReleaseInstance(item); } m_sceneObjects.Clear(); AssetCacheMgr.ReleaseResource(m_lightmap); m_lightmap = null; AssetCacheMgr.ReleaseResource(m_lightProbes); m_lightProbes = null; StoryManager.Instance.ClearPreload(); SubAssetCacheMgr.ReleaseCharacterResources(); SubAssetCacheMgr.ReleaseGearResources(); SfxHandler.UnloadAllFXs(); if (!String.IsNullOrEmpty(m_lastSceneResourceName)) { AssetCacheMgr.ReleaseResource(m_lastSceneResourceName); } //ResourceManager.UnloadUnusedAssets(); //GC.Collect(); if (callBack != null) { callBack(); } //Debug.LogError("StartCoroutine UnloadUnusedAssets"); //Driver.Instance.StartCoroutine(UnloadUnusedAssets(() => //{ // //Debug.LogError("UnloadUnusedAssets finish"); // GC.Collect(); // if (callBack != null) // callBack(); //})); } else { if (callBack != null) { callBack(); } } }