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

66 lines
1.9 KiB
C#
Raw Normal View History

2023-08-22 19:08:45 +08:00
using Cysharp.Threading.Tasks;
2023-10-19 15:00:19 +08:00
using PhxhSDK;
2024-02-21 17:54:08 +08:00
using PhxhSDK.Res;
2024-03-08 12:08:21 +08:00
using UnityEngine;
2023-08-22 19:08:45 +08:00
using UnityEngine.SceneManagement;
namespace Gameplay.SubSystems
{
2024-01-15 15:38:20 +08:00
/// <summary>
/// 游戏场景的底层逻辑
/// </summary>
2023-10-19 15:00:19 +08:00
public class GameSceneManager : Singlenton<GameSceneManager>
2023-08-22 19:08:45 +08:00
{
2024-02-21 17:54:08 +08:00
private ISceneLoader _sceneLoader;
public GameSceneManager()
2023-12-29 19:58:17 +08:00
{
2024-03-08 12:08:21 +08:00
#if UNITY_EDITOR
if (!Application.isPlaying)
{
_sceneLoader = new SceneLoader_Fake();
return;
}
#endif
2024-02-21 17:54:08 +08:00
#if USE_YOO
_sceneLoader = new SceneLoader_YooAsset();
#else
_sceneLoader = new SceneLoader_Addressables();
#endif
2023-12-29 19:58:17 +08:00
}
public async UniTask<SceneHandle> LoadSceneAsync(string scenePath, LoadSceneMode mode = LoadSceneMode.Single)
2023-10-19 15:00:19 +08:00
{
2024-02-21 17:54:08 +08:00
return await _sceneLoader.LoadSceneAsync(scenePath, mode);
2023-11-21 15:04:56 +08:00
}
public async UniTask UnLoadSceneAsync(string scenePath)
{
2024-02-21 17:54:08 +08:00
await _sceneLoader.UnLoadSceneAsync(scenePath);
2023-10-19 15:00:19 +08:00
}
2023-12-29 15:07:04 +08:00
/// <summary>
/// 返回场景加载的进度
/// </summary>
/// <param name="scenePath"></param>
/// <returns>0-100的浮点数</returns>
2023-12-29 15:07:04 +08:00
public float GetSceneLoadingProgress(string scenePath)
{
2024-02-21 17:54:08 +08:00
return _sceneLoader.GetSceneLoadingProgress(scenePath);
2023-12-29 15:07:04 +08:00
}
2024-01-26 17:14:03 +08:00
2024-02-21 17:54:08 +08:00
// 这个方法目前看起来没有引用
// 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;
// }
2023-08-22 19:08:45 +08:00
}
}