/// <summary> /// 卸载场景 /// </summary> /// <param name="sceneAssetName">场景资源名称</param> /// <param name="unloadSceneCallbacks">卸载场景回调函数集</param> /// <param name="userData">用户自定义数据</param> public void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData) { #if UNITY_5_5_OR_NEWER if (gameObject.activeInHierarchy) { StartCoroutine(UnloadSceneCo(sceneAssetName, unloadSceneCallbacks, userData)); } else { UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(GetSceneName(sceneAssetName)); } #else if (UnityEngine.SceneManagement.SceneManager.UnloadScene(sceneAssetName)) { if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null) { unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData); } } else { if (unloadSceneCallbacks.UnloadSceneFailureCallback != null) { unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData); } } #endif }
private IEnumerator UnloadSceneCo(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData) { AsyncOperation asyncOperation = UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync(GetSceneName(sceneAssetName)); if (asyncOperation == null) { yield break; } yield return(asyncOperation); if (asyncOperation.allowSceneActivation) { if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null) { unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData); } } else { if (unloadSceneCallbacks.UnloadSceneFailureCallback != null) { unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData); } } }
public SceneManager() { m_LoadedSceneAssetNames = new List <string>(); m_LoadingSceneAssetNames = new List <string>(); m_UnloadingSceneAssetNames = new List <string>(); m_LoadSceneCallbacks = new LoadAssetCallbacks(LoadSceneSuccessCallback, LoadSceneFailureCallback, LoadSceneUpdateCallback, LoadSceneDependencyAssetCallback); m_UnloadSceneCallbacks = new UnloadSceneCallbacks(UnloadSceneSuccessCallback, UnloadSceneFailureCallback); }
/// <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_ResourceHelper == null) { throw new Exception("You must set resource helper first."); } m_ResourceHelper.UnloadScene(sceneAssetName, unloadSceneCallbacks, 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 (string.IsNullOrEmpty(sceneAssetName)) { throw new Exception("Scene asset name is invalid."); } if (unloadSceneCallbacks == null) { throw new Exception("Unload scene callbacks is invalid."); } m_ResourceManager.UnloadScene(sceneAssetName, unloadSceneCallbacks, userData); }