2025-07-14 05:57:10 +00:00
|
|
|
using System.Threading.Tasks;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace DDD
|
|
|
|
{
|
|
|
|
[CreateAssetMenu(fileName = "FadeSceneTransitionHandlerSo", menuName = "GameFramework/FadeSceneTransitionHandlerSo")]
|
|
|
|
public class FadeSceneTransitionHandlerSo : SceneTransitionHandler
|
|
|
|
{
|
|
|
|
[SerializeField]
|
|
|
|
private float _delayBeforeFadeIn = 1f;
|
|
|
|
|
2025-07-21 07:54:58 +00:00
|
|
|
[SerializeField]
|
|
|
|
private float _fadeOutDuration = 1f;
|
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
private float _fadeInDuration = 0.5f;
|
|
|
|
|
2025-07-14 05:57:10 +00:00
|
|
|
public override async Task OnBeforeSceneActivate(SceneType sceneType)
|
|
|
|
{
|
2025-07-22 03:55:04 +00:00
|
|
|
var evt = GameEvents.FadeOutEvent;
|
|
|
|
evt.Duration = _fadeOutDuration;
|
2025-07-21 07:54:58 +00:00
|
|
|
EventBus.Broadcast(evt);
|
|
|
|
await evt.WaitAsync();
|
2025-07-14 05:57:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public override async Task OnAfterSceneActivate(SceneType sceneType)
|
|
|
|
{
|
2025-07-21 07:54:58 +00:00
|
|
|
float seconds = _delayBeforeFadeIn * 1000;
|
|
|
|
await Task.Delay((int)(seconds));
|
2025-07-22 03:55:04 +00:00
|
|
|
|
|
|
|
var evt = GameEvents.FadeInEvent;
|
|
|
|
evt.Duration = _fadeInDuration;
|
2025-07-21 07:54:58 +00:00
|
|
|
EventBus.Broadcast(evt);
|
|
|
|
await evt.WaitAsync();
|
2025-07-14 05:57:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|