UF_OLDL5——场景切换模块
关于场景切换
在游戏项目里,切换场景并不是切换到一个已经放好东西的场景上
而是切换到一个空场景,通过配置文件去动态的加载场景上的物件,通过玩家消息去动态的创建玩家
所以,我们需要一个场景切换模块来提供一个场景切换的公共接口来指定切换场景后应该做什么
知识点涉及到场景异步加载、协同程序、委托
场景切换模块
使用方法:
场景同步切换,传入场景名和切换场景结束后要执行的方法
场景异步切换,传入场景名和切换场景结束后要执行的方法,可以用这个来更新进度条等内容
异步切换时,事件中心会得到“进度表更新”事件,参数包含场景切换进度,可以使用这个来更新进度条
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| using System.Collections; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement;
public class SceneChangeManager : BaseManager<SceneChangeManager> {
public void LoadScene(string name, UnityAction func) { SceneManager.LoadScene(name); func(); }
public void LoadSceneAsync(string name, UnityAction func) { MonoManager.Instance().StartCoroutine(ReallyLoadSceneAsync(name, func)); }
private IEnumerator ReallyLoadSceneAsync(string name, UnityAction func) { AsyncOperation ao = SceneManager.LoadSceneAsync(name); while (!ao.isDone) { EventCenter.Instance().EventTrigger("进度条更新", ao.progress); yield return ao.progress; } func(); } }
|