73 lines
2.1 KiB
C#
73 lines
2.1 KiB
C#
using Cysharp.Threading.Tasks;
|
|
using PhxhSDK;
|
|
using PhxhSDK.Res;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace Gameplay.SubSystems
|
|
{
|
|
/// <summary>
|
|
/// 游戏场景的底层逻辑
|
|
/// </summary>
|
|
public class GameSceneManager : Singlenton<GameSceneManager>
|
|
{
|
|
/// <summary>
|
|
/// 场景加载器
|
|
/// </summary>
|
|
private ISceneLoader _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 void SetSceneLoadingSetting(bool isUseLowScene)
|
|
{
|
|
_sceneLoader.useLowScene = isUseLowScene;
|
|
}
|
|
|
|
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;
|
|
// }
|
|
}
|
|
} |