NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/SubSystems/GameSceneManager.cs

58 lines
1.7 KiB
C#

using Cysharp.Threading.Tasks;
using PhxhSDK;
using PhxhSDK.Res;
using UnityEngine.SceneManagement;
namespace Gameplay.SubSystems
{
/// <summary>
/// 游戏场景的底层逻辑
/// </summary>
public class GameSceneManager : Singlenton<GameSceneManager>
{
private ISceneLoader _sceneLoader;
public GameSceneManager()
{
#if USE_YOO
_sceneLoader = new SceneLoader_YooAsset();
#else
_sceneLoader = new SceneLoader_Addressables();
#endif
}
public async UniTask<SceneHandle> LoadSceneAsync(string scenePath, LoadSceneMode mode = LoadSceneMode.Single)
{
return await _sceneLoader.LoadSceneAsync(scenePath, mode);
}
public async UniTask UnLoadSceneAsync(string scenePath)
{
await _sceneLoader.UnLoadSceneAsync(scenePath);
}
/// <summary>
/// 返回场景加载的进度
/// </summary>
/// <param name="scenePath"></param>
/// <returns>0-100的浮点数</returns>
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;
// }
}
}