상세 컨텐츠

본문 제목

[Unity/C#] Corutine사용법

unity

by 뿡뿡이형 2020. 1. 8. 11:36

본문

코루틴은 쓰레드와 개념이 비슷한데 내가 실행하고 있는 루틴 이외의 새로운 루틴을 만드는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class CorutineEx : MonoBehaviour
{
    public Image fadeImage;
    public void ClickButton()
    {
        StartCoroutine(FadeOut());
    }
 
    IEnumerator FadeOut()
    {
        Color color = fadeImage.color;
        while (fadeImage.color> 0.0f)
        {
            color.a -= 0.017f;
           fadeImage.color = color;
            yield return new WaitForSeconds(0.017f);
            
        }
    }
}
 
 

간단하게 FadeOut예제를 하나 만들어서 확인해보자

처음 ClickButton함수가 실행되면 StartCorutine함수가 FadeOut함수를 실행시킬 것이다.

1. 코루틴 함수인 FadeOut은 코드를 실행하다 yeild(양보)를 만나게 된다.

2. WaitforSeconds함수를 실행해 0.017초간 멈춘다.

3. IEnumerator(열거자) 내부의 NextMove()를 통해 다음에 실행할 코드가 있는지 확인해본다.

4. 있다면 다시 코루틴이 불러온 함수로 들어가 코드를 실행 아니라면 코드가 끝난다.

(반복)


유니티에서 제공하는 코루틴 함수는 밑에 함수들이 존재한다.

WaitForSeconds(float time) : 유니티상의 시간만큼 기다렸다가 실행

WaitForSecondsRealtime (float time) : 리얼타임 시간만큼 기다렸다가 실행

WaitForFixedUpdate () : FixedUpdate가 실행된 뒤 실행

WaitForEndOfFrame () : Update, LateUpdate가 실행된 뒤 실행 

WaitUntil (System.Func<Bool> predicate) : Update, LateUpdate사이의 멤버변수가 트루값이라면 실행

 

'unity' 카테고리의 다른 글

[Unity] 이벤트 함수 실행순서 및 함수 설명  (0) 2020.01.09

관련글 더보기