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(); } } }