using System; using Cysharp.Threading.Tasks; using UnityEngine.SceneManagement; namespace Code.Scenes { public class SceneLoaderService : ISceneLoaderService { public async UniTaskVoid LoadSceneAsync(string sceneName, float waitFor = 0f, Action callBack = null) { // if (waitFor > 0f) // yield return new WaitForSeconds(waitFor); // AsyncOperation waitNextScene = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single); // while (!waitNextScene.isDone) // yield return null; // callback?.Invoke(); await UniTask.Delay(TimeSpan.FromSeconds(waitFor)); await SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single).ToUniTask(); callBack?.Invoke(); } public async UniTaskVoid LoadSceneAsync(int sceneId, float waitFor = 0f, Action callBack = null) { await UniTask.WhenAll( UniTask.Delay(TimeSpan.FromSeconds(waitFor)), SceneManager.LoadSceneAsync(sceneId, LoadSceneMode.Single).ToUniTask()); callBack?.Invoke(); } } }