54 lines
1.6 KiB (Stored with Git LFS)
C#
54 lines
1.6 KiB (Stored with Git LFS)
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace DDD
|
|
{
|
|
public enum SceneName
|
|
{
|
|
Title = 0,
|
|
Restaurant = 1
|
|
}
|
|
|
|
public class GameManager : Singleton<GameManager>
|
|
{
|
|
public async Task ChangeScene(SceneName sceneName)
|
|
{
|
|
string previousSceneName = SceneManager.GetActiveScene().name;
|
|
string changeSceneName;
|
|
|
|
switch (sceneName)
|
|
{
|
|
case SceneName.Title:
|
|
changeSceneName = "00.Title";
|
|
break;
|
|
case SceneName.Restaurant:
|
|
changeSceneName = "01.Restaurant";
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(sceneName), sceneName, null);
|
|
}
|
|
|
|
await UiManager.Instance.FadeIn();
|
|
|
|
AsyncOperation loadSceneAsync = SceneManager.LoadSceneAsync(changeSceneName, LoadSceneMode.Additive);
|
|
while (loadSceneAsync is { isDone: false })
|
|
await Task.Yield();
|
|
|
|
UiManager.Instance.ChangeScene(previousSceneName, changeSceneName);
|
|
|
|
await Task.Delay(1000);
|
|
|
|
await UiManager.Instance.FadeOut();
|
|
|
|
Debug.Log($"씬 로드 및 전환 완료: {changeSceneName}");
|
|
}
|
|
|
|
public void ChangeSceneByIndex(int index)
|
|
{
|
|
var sceneEnum = (SceneName)index;
|
|
_ = ChangeScene(sceneEnum);
|
|
}
|
|
}
|
|
} |