ProjectDDD/Assets/_DDD/_Scripts/GameFramework/Scene/FadeSceneTransitionHandlerSo.cs

35 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(SceneType sceneType)
{
var evt = new FadeOutEvent(_fadeOutDuration);
EventBus.Broadcast(evt);
await evt.WaitAsync();
}
public override async Task OnAfterSceneActivate(SceneType sceneType)
{
float seconds = _delayBeforeFadeIn * 1000;
await Task.Delay((int)(seconds));
var evt = new FadeInEvent(_fadeInDuration);
EventBus.Broadcast(evt);
await evt.WaitAsync();
}
}
}