public UnloadSceneInfo(AsyncOperation asyncOperation, string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData) { m_AsyncOperation = asyncOperation; m_SceneAssetName = sceneAssetName; m_UnloadSceneCallbacks = unloadSceneCallbacks; m_UserData = userData; }
/// <summary> /// 异步卸载场景。 /// </summary> /// <param name="sceneAssetName">要卸载场景资源的名称。</param> /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param> /// <param name="userData">用户自定义数据。</param> public void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData) { if (m_ResourceComponent.ResourceHelper == null) { throw new Exception("You must set resource helper first."); } object asset = null; if (m_SceneToAssetMap.TryGetValue(sceneAssetName, out asset)) { m_SceneToAssetMap.Remove(sceneAssetName); IObjectPool <AssetObject> assetObjectPools = null; if (m_AssetPools.TryGetValue(AssetCategory.Scene, out assetObjectPools)) { assetObjectPools.Unspawn(asset); } } else { throw new Exception(Utility.Text.Format("Can not find asset of scene '{0}'.", sceneAssetName)); } m_ResourceComponent.ResourceHelper.UnloadScene(sceneAssetName, unloadSceneCallbacks, userData); }
public void AddUnloadSceneInfo(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData) { if (string.IsNullOrEmpty(sceneAssetName)) { Log.Error("Scene asset name is invalid."); return; } if (unloadSceneCallbacks == null) { Log.Error("Unload scene callbacks is invalid."); return; } AsyncOperation asyncOperation = SceneManager.UnloadSceneAsync(sceneAssetName); if (asyncOperation == null) { return; } m_UnloadSceneInfos.AddLast(new UnloadSceneInfo(asyncOperation, sceneAssetName, unloadSceneCallbacks, userData)); }