Files
CourierOld/Game/CourierOld/Assets/Code/Scenes/SceneLoaderService.cs
T
2025-11-21 20:27:11 +03:00

40 lines
1.4 KiB
C#

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();
}
public async UniTask LoadSceneAsyncAwaitable(int sceneId, float waitFor = 0f)
{
await UniTask.WhenAll(
UniTask.Delay(TimeSpan.FromSeconds(waitFor)),
SceneManager.LoadSceneAsync(sceneId, LoadSceneMode.Single).ToUniTask());
}
}
}