본문 바로가기
게임개발/유니티 꿀팁들

Fade in/out full code

by 주인장 블루독 2024. 3. 4.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Fade : MonoBehaviour
{
    [SerializeField] CanvasGroup canvasGroup;
    [SerializeField] float fadeDuration = 1f;

    public void FadeIn()
    {
        StartCoroutine(FadeCanvasGroup(canvasGroup, canvasGroup.alpha, 1, fadeDuration, true));
    }

    public void FadeOut()
    {
        StartCoroutine(FadeCanvasGroup(canvasGroup, canvasGroup.alpha, 0, fadeDuration, false));
    }

    IEnumerator FadeCanvasGroup(CanvasGroup cg, float start, float end, float duration, bool isInteractable)
    {
        if (!isInteractable)
        {
            cg.interactable = false;
            cg.blocksRaycasts = false;
        }

        float elapsedTime = 0f;
        while (elapsedTime < duration)
        {
            cg.alpha = Mathf.Lerp(start, end, elapsedTime/duration);
            elapsedTime += Time.deltaTime;
            yield return null;  
        }

        cg.alpha = end;

        cg.interactable = isInteractable;
        cg.blocksRaycasts = isInteractable;
    }
}
반응형

댓글