59 lines
1.4 KiB
C#
59 lines
1.4 KiB
C#
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 PreInit()
|
|
{
|
|
_canvasGroup = GetComponent<CanvasGroup>();
|
|
}
|
|
|
|
public Task Init()
|
|
{
|
|
return Task.CompletedTask;;
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
} |