2025-11-12 18:39:09 +08:00
|
|
|
using UnityEngine;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using YooAsset;
|
|
|
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
|
using Tuan.GameFramework;
|
|
|
|
|
|
|
|
|
|
namespace Tuan.GameScripts.Main
|
|
|
|
|
{
|
2025-11-13 08:57:19 +08:00
|
|
|
public class SceneLoader : Singleton<SceneLoader>
|
2025-11-12 18:39:09 +08:00
|
|
|
{
|
|
|
|
|
Dictionary<string, SceneHandle> sceneHandles = new Dictionary<string, SceneHandle>();
|
2025-11-13 08:57:19 +08:00
|
|
|
public async UniTask LoadSceneAsync(string sceneName, LoadingWindow loadingWindow = null)
|
2025-11-12 18:39:09 +08:00
|
|
|
{
|
|
|
|
|
SceneHandle sceneHandle = null;
|
|
|
|
|
if (!sceneHandles.ContainsKey(sceneName))
|
|
|
|
|
{
|
|
|
|
|
sceneHandle = YooAssets.LoadSceneAsync("Test");
|
|
|
|
|
await sceneHandle.ToUniTask(loadingWindow);
|
|
|
|
|
sceneHandles[sceneName] = sceneHandle;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sceneHandle = sceneHandles[sceneName];
|
|
|
|
|
}
|
|
|
|
|
sceneHandle.ActivateScene();
|
2025-11-13 08:57:19 +08:00
|
|
|
if(loadingWindow != null)
|
|
|
|
|
UIManager.Inst.CloseUI(loadingWindow);
|
2025-11-12 18:39:09 +08:00
|
|
|
}
|
2025-11-13 08:57:19 +08:00
|
|
|
public void LoadScene(string sceneName)
|
2025-11-12 18:39:09 +08:00
|
|
|
{
|
|
|
|
|
SceneHandle sceneHandle = null;
|
|
|
|
|
if (!sceneHandles.ContainsKey(sceneName))
|
|
|
|
|
{
|
|
|
|
|
sceneHandle = YooAssets.LoadSceneSync("Test");
|
|
|
|
|
sceneHandles[sceneName] = sceneHandle;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sceneHandle = sceneHandles[sceneName];
|
|
|
|
|
}
|
|
|
|
|
sceneHandle.ActivateScene();
|
|
|
|
|
}
|
2025-11-13 08:57:19 +08:00
|
|
|
public SceneHandle GetHandle(string name)
|
|
|
|
|
{
|
|
|
|
|
if (sceneHandles.ContainsKey(name))
|
|
|
|
|
return sceneHandles[name];
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2025-11-12 18:39:09 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|