using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; /// /// 场景切换模块 /// 1.场景异步加载 /// 2.协程 /// 3.委托 /// public class ScenesMgr : BaseManager { /// /// 切换场景,同步 /// /// public void LoadScene(string name,UnityAction fun) { //场景同步加载 SceneManager.LoadScene(name); //加载完成过后 才会去执行fun fun(); } /// /// 异步加载,提供给外部 /// /// /// public void LoadSceneAsyn(string name,UnityAction fun) { //通过mono公共模块开启协程,因为协程要继承mono MonoMgr.GetInstance().StartCoroutine(ReallyLoadSceneAsyn(name, fun)); } /// /// 协程异步加载场景 /// /// /// /// private IEnumerator ReallyLoadSceneAsyn(string name, UnityAction fun) { AsyncOperation ao = SceneManager.LoadSceneAsync(name); //可以得到场景加载的进度 while(!ao.isDone) { //事件中心 向外分发 进度情况 外面想用就用 EventCenter.GetInstance().EventTrigger("进度条更新",ao.progress); //这里面去更新进度条 yield return ao.progress; } //加载完成过后,才会执行fun fun(); } }