public void LoadAddressableScene(string address, LoadSceneMode mode, OnSceneChangedAction callback) { Addressables.LoadScene(address, mode).Completed += (opr) => { if (callback != null) { callback(); } }; }
IEnumerator Cor_UnloadSceneAsync(string sceneName, OnSceneChangedAction action) { AsyncOperation opr = SceneManager.UnloadSceneAsync(sceneName); yield return(opr); if (action != null) { action(); } }
// 卸载场景 public void UnloadSceneAsync(string sceneName, OnSceneChangedAction action = null) { StartCoroutine(Cor_UnloadSceneAsync(sceneName, action)); }
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(); } }
// 异步加载场景,把异步封装成了同步+回调 public void LoadSceneAsync(string bundleName, string sceneName, LoadSceneMode mode = LoadSceneMode.Single, OnSceneChangedAction action = null) { StartCoroutine(Cor_LoadSceneAsync(bundleName, sceneName, mode, action)); }
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(); } }