less than 1 minute read

이 문서는 Udemy의 ‘RPG Core Combat Creator’ 강의를 보고 배운 점을 적은 것입니다.

필요 이유

Fade In, Fade Out의 효과를 주고 싶다.

구조

Fader (오브젝트) : Canvas 오브젝트 (UI)

  1. Fader (스크립트) : 구동 코드 부분
  2. Canvas Group (컴포넌트) : Canvas에 속해있는 UI 컴포넌트들을 한번에 조절하는 컴포넌트
  3. Image (컴포넌트) : 화면에서 사라지거나 나타나는 이미지

코드

namespace RPG.SceneManager
{
    public class Fader : MonoBehaviour
    {
        CanvasGroup canvasGroup;
        void Start()
        {
            canvasGroup = GetComponent<CanvasGroup>();
        }

        public IEnumerator FadeIn(float time)
        {
            whlie (canvasGroup.alpha > 0.0f)
            {
                canvasGroup.alpha -= Time.deltaTime / time;
            }
        }

        public IEnumerator FadeOut(float time)
        {
            whlie (canvasGroup.alpha < 1.0f)
            {
                canvasGroup.alpha += Time.deltaTime / time;
            }
        }
        
        public IEnumerator FadeOutIn(float time)
        {
            yield return FadeOut(time);
            yield return FadeIn(time);
        }
    }
}

배운 점

  1. 코루틴 안에서 yield return 으로 코루틴이 완료된 후 다음 동작을 실행하도록 할 수 있다.
  2. Time.deltaTime / time 으로 현재 흐른 시간을 0 ~ 1 값으로 변환할 수 있다.
    (목표 시간이 3초라면, 시작은 0, 3초 후에는 1)