using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; public class ScenesManager : BaseManager { private ScenesManager() { } /// /// 同步加载场景 /// /// 场景名称 /// 场景加载后需要做的 public void LoadScene(string sceneName, UnityAction action = null, LoadSceneMode loadSceneMode = LoadSceneMode.Single) { SceneManager.LoadScene(sceneName, loadSceneMode); action?.Invoke(); } /// /// 异步加载场景 /// /// 场景名称 /// 委托 /// 加载场景方式 public void LoadSceneAsyn(string sceneName, UnityAction action = null, LoadSceneMode loadSceneMode = LoadSceneMode.Single) { MonoMgr.Instance.StartCoroutine(ReallyLoadScene(sceneName, action)); } /// /// 协程加载场景 /// /// 场景名称 /// 委托 /// 加载场景方式 /// private IEnumerator ReallyLoadScene(string sceneName, UnityAction action = null, LoadSceneMode loadSceneMode = LoadSceneMode.Single) { E_SceneType currentSceneName; switch (sceneName) { case "03_OfficeScene": currentSceneName = E_SceneType.Office; break; case "04_ToolMaterialScene": currentSceneName = E_SceneType.ToolRoom; break; case "05_LiveScene": currentSceneName = E_SceneType.Site; break; default: currentSceneName = E_SceneType.None; break; } GameManager.RunModelMgr.SceneType = currentSceneName; AsyncOperation ao = SceneManager.LoadSceneAsync(sceneName, loadSceneMode); while (!ao.isDone) { yield return null; } action?.Invoke(); } }