ProjectDDD/Assets/_Datas/02.Scripts/Controllers/UiManager.cs
2025-07-03 13:03:49 +09:00

97 lines
2.5 KiB (Stored with Git LFS)
C#

using System.Threading.Tasks;
using DG.Tweening;
using Sirenix.OdinInspector;
using UnityEngine;
namespace DDD
{
public class UiManager : Singleton<UiManager>
{
[Title("연출")]
[SerializeField]
private float _fadeTime = 0.5f;
private GameObject _titlePanel;
private GameObject _fadePanel;
private CanvasGroup _fadeCanvasGroup;
private Tween _fadeIn;
private Tween _fadeOut;
protected override void OnAwake()
{
_titlePanel = transform.Find("TitlePanel").gameObject;
_fadePanel = transform.Find("FadePanel").gameObject;
_fadeCanvasGroup = _fadePanel.GetComponent<CanvasGroup>();
}
private void Start()
{
_titlePanel.SetActive(true);
_fadePanel.SetActive(false);
_fadeCanvasGroup.alpha = 0f;
_fadeIn = _fadeCanvasGroup.DOFade(1f, _fadeTime).SetUpdate(true).SetAutoKill(false).Pause();
_fadeOut = _fadeCanvasGroup.DOFade(0f, _fadeTime).SetUpdate(true).SetAutoKill(false).Pause();
}
private void OnDestroy()
{
_fadeIn?.Kill();
_fadeOut?.Kill();
}
public async Task FadeIn()
{
if (_fadeIn == null)
{
Debug.LogWarning("FadeIn 트윈이 설정되지 않았습니다.");
return;
}
_fadePanel.SetActive(true);
_fadeIn.Restart();
await _fadeIn.AsyncWaitForCompletion();
}
public async Task FadeOut()
{
if (_fadeOut == null)
{
Debug.LogWarning("FadeOut 트윈이 설정되지 않았습니다.");
return;
}
_fadeOut.Restart();
await _fadeOut.AsyncWaitForCompletion();
_fadePanel.SetActive(false);
}
public void ChangeScene(SceneType currentSceneType, SceneType changeSceneType)
{
if (currentSceneType == SceneType.Title)
{
_titlePanel.SetActive(false);
}
else if (currentSceneType == SceneType.Restaurant)
{
}
if (changeSceneType == SceneType.Title)
{
_titlePanel.SetActive(true);
}
else if (changeSceneType == SceneType.Restaurant)
{
}
}
}
}