using System.Threading.Tasks; using DG.Tweening; using Sirenix.OdinInspector; using UnityEngine; namespace DDD { public class UiManager : Singleton { [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(); } 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) { } } } }