ProjectDDD/Assets/_DDD/_Scripts/GameFramework/Scene/FadeSceneTransitionHandlerSo.cs
2025-08-01 19:20:38 +09:00

37 lines
1.1 KiB
C#

using System.Threading.Tasks;
using UnityEngine;
namespace DDD
{
[CreateAssetMenu(fileName = "FadeSceneTransitionHandlerSo", menuName = "GameFramework/FadeSceneTransitionHandlerSo")]
public class FadeSceneTransitionHandlerSo : SceneTransitionHandler
{
[SerializeField]
private float _delayBeforeFadeIn = 1f;
[SerializeField]
private float _fadeOutDuration = 1f;
[SerializeField]
private float _fadeInDuration = 0.5f;
public override async Task OnBeforeSceneActivate()
{
var evt = GameEvents.FadeOutEvent;
evt.Duration = _fadeOutDuration;
EventBus.Broadcast(evt);
await evt.WaitAsync();
}
public override async Task OnAfterSceneActivate()
{
float seconds = _delayBeforeFadeIn * 1000;
await Task.Delay((int)(seconds));
var evt = GameEvents.FadeInEvent;
evt.Duration = _fadeInDuration;
EventBus.Broadcast(evt);
await evt.WaitAsync();
}
}
}