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) { 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(); } }