ProjectDDD/Assets/_DDD/_Scripts/GameFramework/FadeManager.cs

54 lines
1.3 KiB
C#
Raw Normal View History

using System.Threading.Tasks;
using DG.Tweening;
using UnityEngine;
namespace DDD
{
public class FadeManager : Singleton<FadeManager>, IManager
{
[SerializeField]
private float _fadeOutDuration = 0.5f;
[SerializeField]
private float _fadeInDuration = 1f;
private CanvasGroup _canvasGroup;
public void Init()
{
_canvasGroup = GetComponent<CanvasGroup>();
}
public void PostInit()
{
_canvasGroup.alpha = 0f;
_canvasGroup.gameObject.SetActive(false);
}
public async Task FadeOut()
{
_canvasGroup.gameObject.SetActive(true);
_canvasGroup.blocksRaycasts = true;
await _canvasGroup.DOFade(1f, _fadeOutDuration)
.SetUpdate(true)
.AsyncWaitForCompletion();
}
public async Task FadeIn()
{
await _canvasGroup.DOFade(0f, _fadeInDuration)
.SetUpdate(true)
.AsyncWaitForCompletion();
_canvasGroup.blocksRaycasts = false;
_canvasGroup.gameObject.SetActive(false);
}
public async Task FadeOutIn()
{
await FadeOut();
await FadeIn();
}
}
}