728x90
서서히 UI가 사라지는 Fade-In 기능을 사용하려고 아래와 같이 코드를 작성하였다.
하지만 너무 빠르게 컴퓨터가 동작해 바로 화면이 불투명해지게 변한다.
이를 해결하기 위해 함수에 대기시간을 주는 "코루틴" 이라는 함수를 이용하였다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //UI안에 있는 함수를 쓰기 위해 선언
public class Fade : MonoBehaviour
{
public Image fadeImage;
void Start()
{
FadeIn();
}
void FadeIn()
{
Color startColor = fadeImage.color; //처음 이미지 색
for(int i=0;i<100;i++)
{
//R(red),G(green),B(blue),A(alpha),
startColor.a = startColor.a - 0.01f;
fadeImage.color = startColor; //천천히 빼서 fadein처럼 보이게함
}
}
}
코루틴으로 작성한 함수
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Fade : MonoBehaviour
{
public Image fadeImage;
// Start is called before the first frame update
void Start()
{
StartCoroutine(FadeIn()); //성능은 좋지만 인위적으로 멈추는거 불가능
//StartCoroutine("FadeIn") => 인위적으로 멈출 수 있음
}
IEnumerator FadeIn()
{
Color startColor = fadeImage.color; //처음 이미지 색
for(int i=0;i<100;i++)
{
//R(red),G(green),B(blue),A(alpha),
startColor.a = startColor.a - 0.01f;
fadeImage.color = startColor; //천천히 빼서 fadein처럼 보이게함
//함수가 100번 동작하니 총 1초라는 대기시간이 걸림
yield return new WaitForSeconds(0.01f); // 0.01초라는 대기시간 삽입
}
}
}
천천히 사라지는걸 확인 할 수 있다.
'유니티 > 유니티 문법?' 카테고리의 다른 글
싱글톤 (점수 관리 같은거 할 때) (2) | 2021.04.19 |
---|---|
리스트 (실시간으로 입력 받음) (0) | 2021.04.18 |
인스턴스화 (0) | 2021.04.12 |
유니티 물체 회전시키는법 (Quaternion) (0) | 2021.04.12 |
유니티 쿼터니언 Lerp (0) | 2021.04.12 |