using System.Threading.Tasks; using DG.Tweening; using UnityEngine; namespace DDD { public class FadeUi : BaseUi, IEventHandler, IEventHandler { protected override void Awake() { base.Awake(); _canvasGroup.alpha = 0f; } protected override void TryRegister() { EventBus.Register(this); EventBus.Register(this); } protected override void TryUnregister() { EventBus.Unregister(this); EventBus.Unregister(this); } public void Invoke(FadeInEvent evt) { _ = FadeInAsync(evt); } public void Invoke(FadeOutEvent evt) { _ = FadeOutAsync(evt); } private async Task FadeInAsync(FadeInEvent evt) { await _canvasGroup.DOFade(0f, evt.Duration) .SetUpdate(true) .AsyncWaitForCompletion(); ClosePanel(); evt.CompletionSource.SetResult(true); } private async Task FadeOutAsync(FadeOutEvent evt) { OpenPanel(); await _canvasGroup.DOFade(1f, evt.Duration) .SetUpdate(true) .AsyncWaitForCompletion(); evt.CompletionSource.SetResult(true); } } }