Пример #1
0
 public void LoadAddressableScene(string address, LoadSceneMode mode, OnSceneChangedAction callback)
 {
     Addressables.LoadScene(address, mode).Completed += (opr) =>
     {
         if (callback != null)
         {
             callback();
         }
     };
 }
Пример #2
0
        IEnumerator Cor_UnloadSceneAsync(string sceneName, OnSceneChangedAction action)
        {
            AsyncOperation opr = SceneManager.UnloadSceneAsync(sceneName);

            yield return(opr);

            if (action != null)
            {
                action();
            }
        }
Пример #3
0
 // 卸载场景
 public void UnloadSceneAsync(string sceneName, OnSceneChangedAction action = null)
 {
     StartCoroutine(Cor_UnloadSceneAsync(sceneName, action));
 }
Пример #4
0
        IEnumerator Cor_LoadSceneAsync(string bundleName, string sceneName, LoadSceneMode loadSceneMode, OnSceneChangedAction action)
        {
            yield return(null);

#if UNITY_EDITOR    // Editor+Develop模式下不加载bundle,直接读场景文件(需要将场景加到BuildSettings,打包时取消勾选)
            if (ezApplication.packageMode != PackageMode.Develop)
#endif
            yield return(Cor_LoadBundleAsync(bundleName, null));

            AsyncOperation opr = SceneManager.LoadSceneAsync(sceneName, loadSceneMode);
            yield return(opr);

            if (action != null)
            {
                action();
            }
        }
Пример #5
0
 // 异步加载场景,把异步封装成了同步+回调
 public void LoadSceneAsync(string bundleName, string sceneName, LoadSceneMode mode = LoadSceneMode.Single, OnSceneChangedAction action = null)
 {
     StartCoroutine(Cor_LoadSceneAsync(bundleName, sceneName, mode, action));
 }
Пример #6
0
        IEnumerator Cor_LoadSceneAsync(string bundleName, string sceneName, LoadSceneMode mode, OnSceneChangedAction action)
        {
            if (loadingPanel != null)
            {
                loadingPanel.ShowProgress("Loading", 0);
            }
            yield return(null);

#if UNITY_EDITOR    // Editor+Develop模式下不加载bundle,直接读场景文件(需要将场景加到BuildSettings,打包时取消勾选)
            if (EZFrameworkSettings.Instance.runMode != EZFrameworkSettings.RunMode.Develop)
#endif
            yield return(Cor_LoadBundleAsync(bundleName, null));

            AsyncOperation opr = SceneManager.LoadSceneAsync(sceneName, mode);
            while (!opr.isDone)
            {
                if (loadingPanel != null)
                {
                    loadingPanel.ShowProgress("Loading", opr.progress + 0.1f);
                }
                yield return(null);
            }
            if (action != null)
            {
                action();
            }
            yield return(null);

            if (loadingPanel != null)
            {
                loadingPanel.LoadComplete();
            }
        }