71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| using UnityEngine.Events;
 | |
| using UnityEngine.SceneManagement;
 | |
| 
 | |
| public class ScenesManager : BaseManager<ScenesManager>
 | |
| {
 | |
|     private ScenesManager()
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 同步加载场景
 | |
|     /// </summary>
 | |
|     /// <param name="sceneName">场景名称</param>
 | |
|     /// <param name="action">场景加载后需要做的</param>
 | |
|     public void LoadScene(string sceneName, UnityAction action = null,
 | |
|         LoadSceneMode loadSceneMode = LoadSceneMode.Single)
 | |
|     {
 | |
|         SceneManager.LoadScene(sceneName, loadSceneMode);
 | |
|         action?.Invoke();
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 异步加载场景
 | |
|     /// </summary>
 | |
|     /// <param name="sceneName">场景名称</param>
 | |
|     /// <param name="action">委托</param>
 | |
|     /// <param name="loadSceneMode">加载场景方式</param>
 | |
|     public void LoadSceneAsyn(string sceneName, UnityAction action = null,
 | |
|         LoadSceneMode loadSceneMode = LoadSceneMode.Single)
 | |
|     {
 | |
|         MonoMgr.Instance.StartCoroutine(ReallyLoadScene(sceneName, action));
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 协程加载场景
 | |
|     /// </summary>
 | |
|     /// <param name="sceneName">场景名称</param>
 | |
|     /// <param name="action">委托</param>
 | |
|     /// <param name="loadSceneMode">加载场景方式</param>
 | |
|     /// <returns></returns>
 | |
|     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();
 | |
|     }
 | |
| } |