팀프로젝트를 진행하다 스테이지를 전환하면 해당 스테이지를 보여주는 연출이 필요해 해당 부분을 구현했다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using TMPro;
public class ChanageStage : MonoBehaviour
{
public GameObject stageUI;
public TextMeshProUGUI stageName;
private CanvasGroup canvasGroup;
private void Start()
{
canvasGroup = stageUI.GetComponent<CanvasGroup>();
if(canvasGroup == null )
{
canvasGroup = gameObject.AddComponent<CanvasGroup>();
}
stageUI.SetActive(false);
}
public void FadeInStageUI(float duration, string stage)
{
//SetStageText();
stageUI.SetActive(true);
stageName.text = stage;
canvasGroup.DOFade(1f, duration).SetEase(Ease.InOutQuad).OnComplete(() =>
{
StartCoroutine(WaitFadeOut(2f, 1f));
});
}
private IEnumerator WaitFadeOut(float waitTime, float fadeOutDuration)
{
yield return new WaitForSeconds(waitTime);
FadeOutStageUI(fadeOutDuration);
}
public void FadeOutStageUI(float duration)
{
canvasGroup.DOFade(0f, duration).SetEase(Ease.InOutQuad).OnComplete(() => stageUI.SetActive(false));
}
}
DOTween을 사용해 페이드 인, 아웃 효과를 준다. CanvasGroup은 해당 오브젝트들을 함께 투명화해주기 위해 사용했다.
중간의 코루틴은 텍스트가 출력되고 약간 여유를 주고 함수를 실행하기 위해 사용했다.
DOTween을 실행 후 완료되면 잠깐 기다리게 하기 위해 코루틴을 실행하고 그 후 페이드아웃효과가 완료되면 해당 오브젝트를 비활성화하게 코드를 작성했다.