using UnityEngine; using System.Collections.Generic; using YooAsset; using Cysharp.Threading.Tasks; using Tuan.GameFramework; namespace Tuan.GameScripts.Main { public class GameSceneManager : Singleton { Dictionary sceneHandles = new Dictionary(); public async UniTask LoadSceneAsync(string sceneName) { SceneHandle sceneHandle = null; LoadingWindow loadingWindow = await UIManager.Inst.ShowUIAsync($"Loading{sceneName}", MainUICanvas.Inst.Medium, true); if (!sceneHandles.ContainsKey(sceneName)) { sceneHandle = YooAssets.LoadSceneAsync("Test"); await sceneHandle.ToUniTask(loadingWindow); sceneHandles[sceneName] = sceneHandle; } else { sceneHandle = sceneHandles[sceneName]; } sceneHandle.ActivateScene(); } public async void LoadScene(string sceneName) { SceneHandle sceneHandle = null; if (!sceneHandles.ContainsKey(sceneName)) { LoadingWindow loadingWindow = await UIManager.Inst.ShowUIAsync($"Loading{sceneName}", MainUICanvas.Inst.Medium, true); sceneHandle = YooAssets.LoadSceneSync("Test"); sceneHandles[sceneName] = sceneHandle; } else { sceneHandle = sceneHandles[sceneName]; } sceneHandle.ActivateScene(); } } }