using System.Threading.Tasks; using DG.Tweening; using UnityEngine; namespace DDD { public class FadeManager : Singleton, IManager { [SerializeField] private float _fadeOutDuration = 0.5f; [SerializeField] private float _fadeInDuration = 1f; private CanvasGroup _canvasGroup; public void Init() { _canvasGroup = GetComponent(); } public void PostInit() { _canvasGroup.alpha = 0f; _canvasGroup.gameObject.SetActive(false); } public async Task FadeOut() { _canvasGroup.gameObject.SetActive(true); _canvasGroup.blocksRaycasts = true; await _canvasGroup.DOFade(1f, _fadeOutDuration) .SetUpdate(true) .AsyncWaitForCompletion(); } public async Task FadeIn() { await _canvasGroup.DOFade(0f, _fadeInDuration) .SetUpdate(true) .AsyncWaitForCompletion(); _canvasGroup.blocksRaycasts = false; _canvasGroup.gameObject.SetActive(false); } public async Task FadeOutIn() { await FadeOut(); await FadeIn(); } } }