using Cysharp.Threading.Tasks; using PhxhSDK; using PhxhSDK.Res; using UnityEngine; using UnityEngine.SceneManagement; namespace Gameplay.SubSystems { /// /// 游戏场景的底层逻辑 /// public class GameSceneManager : Singlenton { private ISceneLoader _sceneLoader; public ISceneLoader SceneLoader => _sceneLoader; public GameSceneManager() { #if UNITY_EDITOR if (!Application.isPlaying) { _sceneLoader = new SceneLoader_Fake(); return; } #endif #if USE_YOO _sceneLoader = new SceneLoader_YooAsset(); #else _sceneLoader = new SceneLoader_Addressables(); #endif } public async UniTask LoadSceneAsync(string scenePath, LoadSceneMode mode = LoadSceneMode.Single) { return await _sceneLoader.LoadSceneAsync(scenePath, mode); } public async UniTask UnLoadSceneAsync(string scenePath) { await _sceneLoader.UnLoadSceneAsync(scenePath); } /// /// 返回场景加载的进度 /// /// /// 0-100的浮点数 public float GetSceneLoadingProgress(string scenePath) { return _sceneLoader.GetSceneLoadingProgress(scenePath); } // 这个方法目前看起来没有引用 // public SceneHandle GetLoadedSceneHandle(string scenePath) // { // scenePath = GetPostProcessedScenePath(scenePath); // var op = _sceneOpDic.GetValueOrDefault(scenePath); // if (op.Status == AsyncOperationStatus.Succeeded) // { // return new SceneHandle(op.Result.Scene); // } // // return null; // } } }