Esempio n. 1
0
        private IEnumerator UnloadSceneCo(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
        {
            AsyncOperation asyncOperation = SceneManager.UnloadSceneAsync(SceneComponent.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);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 卸载场景。
        /// </summary>
        /// <param name="sceneAssetName">场景资源名称。</param>
        /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
        /// <param name="userData">用户自定义数据。</param>
        public override void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
        {
#if UNITY_5_5_OR_NEWER
            if (gameObject.activeInHierarchy)
            {
                StartCoroutine(UnloadSceneCo(sceneAssetName, unloadSceneCallbacks, userData));
            }
            else
            {
                SceneManager.UnloadSceneAsync(SceneComponent.GetSceneName(sceneAssetName));
            }
#else
            if (SceneManager.UnloadScene(SceneComponent.GetSceneName(sceneAssetName)))
            {
                if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData);
                }
            }
            else
            {
                if (unloadSceneCallbacks.UnloadSceneFailureCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData);
                }
            }
#endif
        }
Esempio n. 3
0
 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 override void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
        {
#if UNITY_5_5_OR_NEWER
            if (gameObject.activeInHierarchy)
            {
            }
#else
#endif
        }
 public SceneManager()
 {
     m_LoadedSceneAssetNames    = new List <string>();
     m_LoadingSceneAssetNames   = new List <string>();
     m_UnloadingSceneAssetNames = new List <string>();
     m_LoadSceneCallbacks       = new LoadSceneCallbacks(LoadSceneSuccessCallback, LoadSceneDependencyAssetCallback, LoadSceneUpdateCallback, LoadSceneFailureCallback);
     m_UnloadSceneCallbacks     = new UnloadSceneCallbacks(UnloadSceneSuccessCallback, UnloadSceneFailureCallback);
     m_ResourceManager          = FrameworkEntry.Instance.GetManager <ResourceManager>();
     m_EventManager             = FrameworkEntry.Instance.GetManager <EventManager>();
 }
Esempio n. 6
0
 /// <summary>
 /// 卸载场景。
 /// </summary>
 /// <param name="sceneAssetName">场景资源名称。</param>
 /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
 /// <param name="userData">用户自定义数据。</param>
 public override void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
 {
     if (gameObject.activeInHierarchy)
     {
         StartCoroutine(UnloadSceneCo(sceneAssetName, unloadSceneCallbacks, userData));
     }
     else
     {
         SceneManager.UnloadSceneAsync(MonoScene.GetSceneName(sceneAssetName));
     }
 }
Esempio n. 7
0
        /// <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))
            {
                Log.Error("Scene asset name is invalid.");
                return;
            }

            if (!sceneAssetName.StartsWith("Assets/") || !sceneAssetName.EndsWith(".unity"))
            {
                Log.Error("Scene asset name '{0}' is invalid.", sceneAssetName);
                return;
            }

            if (unloadSceneCallbacks == null)
            {
                Log.Error("Unload scene callbacks is invalid.");
                return;
            }

            if (!ExistsFile(sceneAssetName))
            {
                Log.Error("Scene '{0}' is not exist.", sceneAssetName);
                return;
            }

#if UNITY_5_5_OR_NEWER
            AsyncOperation asyncOperation = SceneManager.UnloadSceneAsync(sceneAssetName);
            if (asyncOperation == null)
            {
                return;
            }

            m_UnloadSceneInfos.AddLast(new UnloadSceneInfo(asyncOperation, sceneAssetName, unloadSceneCallbacks, userData));
#else
            if (SceneManager.UnloadScene(SceneComponent.GetSceneName(sceneAssetName)))
            {
                if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData);
                }
            }
            else
            {
                if (unloadSceneCallbacks.UnloadSceneFailureCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData);
                }
            }
#endif
        }
 /// <summary>
 /// 初始化场景管理器的新实例。
 /// </summary>
 public SceneManager()
 {
     m_LoadedSceneAssetNames                = new List <string>();
     m_LoadingSceneAssetNames               = new List <string>();
     m_UnloadingSceneAssetNames             = new List <string>();
     m_LoadSceneCallbacks                   = new LoadSceneCallbacks(LoadSceneSuccessCallback, LoadSceneFailureCallback, LoadSceneUpdateCallback, LoadSceneDependencyAssetCallback);
     m_UnloadSceneCallbacks                 = new UnloadSceneCallbacks(UnloadSceneSuccessCallback, UnloadSceneFailureCallback);
     m_ResourceManager                      = null;
     m_LoadSceneSuccessEventHandler         = null;
     m_LoadSceneFailureEventHandler         = null;
     m_LoadSceneUpdateEventHandler          = null;
     m_LoadSceneDependencyAssetEventHandler = null;
     m_UnloadSceneSuccessEventHandler       = null;
     m_UnloadSceneFailureEventHandler       = null;
 }
        /// <summary>
        /// 卸载场景。
        /// </summary>
        /// <param name="sceneAssetName">场景资源名称。</param>
        /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
        /// <param name="userData">用户自定义数据。</param>
        public override void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
        {
#if UNITY_5_3 || UNITY_5_4
            if (SceneManager.UnloadScene(SceneComponent.GetSceneName(sceneAssetName)))
            {
                if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData);
                }
            }
            else
            {
                if (unloadSceneCallbacks.UnloadSceneFailureCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData);
                }
            }
#else
            StartCoroutine(UnloadSceneCo(sceneAssetName, unloadSceneCallbacks, userData));
#endif
        }
        /// <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))
            {
                Log.Error("Scene asset name is invalid.");
                return;
            }

            if (unloadSceneCallbacks == null)
            {
                Log.Error("Unload scene callbacks is invalid.");
                return;
            }

#if UNITY_5_3 || UNITY_5_4
            if (SceneManager.UnloadScene(SceneComponent.GetSceneName(sceneAssetName)))
            {
                if (unloadSceneCallbacks.UnloadSceneSuccessCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneSuccessCallback(sceneAssetName, userData);
                }
            }
            else
            {
                if (unloadSceneCallbacks.UnloadSceneFailureCallback != null)
                {
                    unloadSceneCallbacks.UnloadSceneFailureCallback(sceneAssetName, userData);
                }
            }
#else
            AsyncOperation asyncOperation = SceneManager.UnloadSceneAsync(sceneAssetName);
            if (asyncOperation == null)
            {
                return;
            }

            m_UnloadSceneInfos.AddLast(new UnloadSceneInfo(asyncOperation, sceneAssetName, unloadSceneCallbacks, userData));
#endif
        }
        /// <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))
            {
                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));
        }
Esempio n. 12
0
 /// <summary>
 /// 卸载场景。
 /// </summary>
 /// <param name="sceneAssetName">场景资源名称。</param>
 /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
 /// <param name="userData">用户自定义数据。</param>
 public abstract void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData);
Esempio n. 13
0
 /// <summary>
 /// 异步卸载场景。
 /// </summary>
 /// <param name="sceneAssetName">要卸载场景资源的名称。</param>
 /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
 public void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks)
 {
     UnloadScene(sceneAssetName, unloadSceneCallbacks, null);
 }
Esempio n. 14
0
 public void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
 {
     //throw new NotImplementedException();
 }
 /// <summary>
 /// 卸载场景。
 /// </summary>
 /// <param name="sceneAssetName">场景资源名称。</param>
 /// <param name="unloadSceneCallbacks">卸载场景回调函数集。</param>
 /// <param name="userData">用户自定义数据。</param>
 public override void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData)
 {
     StartCoroutine(UnloadSceneCo(sceneAssetName, unloadSceneCallbacks, userData));
 }