// using UnityEngine; // using UnityEngine.SceneManagement; // using Cysharp.Threading.Tasks; // using DefaultNamespace.ProcessMode; // using MotionFramework; // 引入 UniTask // // public class SceneManagerSingleton : ModuleSingleton, IModule // { // private bool _isSceneLoading = false; // 标记场景是否正在加载 // private string _currentSceneName = ""; // 当前场景名称 // // // 场景加载事件 // public delegate void SceneLoadedHandler(string sceneName); // // public event SceneLoadedHandler OnSceneLoaded; // // // /// // /// 检查当前场景是否正在加载 // /// // public bool IsSceneLoading => _isSceneLoading; // // /// // /// 获取当前加载的场景名称 // /// // public string CurrentSceneName => _currentSceneName; // // /// // /// 异步加载场景 // /// // /// 目标场景名称 // /// 返回一个 UniTask // public async UniTask LoadSceneAsync(string sceneName) // { // // 如果场景已经在加载,直接返回 // if (_isSceneLoading) // { // Debug.LogWarning("场景正在加载中,不能重复加载!"); // return; // } // // // 设置为正在加载 // _isSceneLoading = true; // _currentSceneName = sceneName; // // // 异步加载场景 // AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName); // // // 等待场景加载完成 // while (!asyncLoad.isDone) // { // await UniTask.Yield(); // 每一帧等待 // } // // // 加载完成,触发事件 // OnSceneLoaded?.Invoke(sceneName); // // // 设置为加载完成 // _isSceneLoading = false; // Debug.Log($"场景 {sceneName} 加载完成"); // } // // public void OnCreate(object createParam) // { // } // // public void OnUpdate() // { // } // // public void OnDestroy() // { // } // // public void OnGUI() // { // } // }