C# Unity 스테이지 전환 시 스테이지 출력

삐얅·2024년 8월 2일
0

1. 개요

팀프로젝트를 진행하다 스테이지를 전환하면 해당 스테이지를 보여주는 연출이 필요해 해당 부분을 구현했다.

2. 코드

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을 실행 후 완료되면 잠깐 기다리게 하기 위해 코루틴을 실행하고 그 후 페이드아웃효과가 완료되면 해당 오브젝트를 비활성화하게 코드를 작성했다.

0개의 댓글

관련 채용 정보