ProjectDDD/Assets/_Datas/02.Scripts/Controllers/GameManager.cs
2025-07-01 14:14:30 +09:00

61 lines
1.7 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 : MonoBehaviour
{
private UiManager _uiManager;
private void Awake()
{
_uiManager = FindAnyObjectByType<UiManager>();
}
public async void 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.FadeIn();
AsyncOperation loadSceneAsync = SceneManager.LoadSceneAsync(changeSceneName, LoadSceneMode.Additive);
while (loadSceneAsync is { isDone: false })
await Task.Yield();
_uiManager.ChangeScene(previousSceneName, changeSceneName);
await Task.Delay(1000);
await _uiManager.FadeOut();
Debug.Log($"씬 로드 및 전환 완료: {changeSceneName}");
}
public void ChangeSceneByIndex(int index)
{
var sceneEnum = (SceneName)index;
ChangeScene(sceneEnum);
}
}
}