ProjectDDD/Assets/_DDD/_Scripts/GameUi/FadeUi.cs
2025-08-14 17:21:17 +09:00

60 lines
1.4 KiB
C#

using System.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
namespace DDD
{
public class FadeUi : BaseUi, IEventHandler<FadeInEvent>, IEventHandler<FadeOutEvent>
{
protected override void Awake()
{
base.Awake();
_canvasGroup.alpha = 0f;
}
protected override void TryRegister()
{
EventBus.Register<FadeInEvent>(this);
EventBus.Register<FadeOutEvent>(this);
}
protected override void TryUnregister()
{
EventBus.Unregister<FadeInEvent>(this);
EventBus.Unregister<FadeOutEvent>(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);
}
}
}