본문 바로가기
유니티 공부/Unity

Unity - Coroutine(코루틴)

by 코딩하는 돼징 2023. 5. 20.
반응형

Coroutine(코루틴)

1. 사용 이유

Update함수는 게임 오브젝트가 활성화된 상태에서 매 프레임 호출되어 수행한다.

그런데 만약 3초동안 지연을 시키고 싶으면 어떻게 해야할까?

Update함수 안에서 일정한 시간 간격을 두고 작업을 처리할 수 있도록 해야 한다.

코루틴은 함수 실행을 일시 중지하고 나중에 재개할 수 있는 기능을 제공한다. 이러한 특정 조건을 설정하기 위해서 yield문을 사용한다. 

출처 : https://docs.unity3d.com/Manual/ExecutionOrder.html

 

 


2. Code 예시

01 IEnumerator 함수 선언

코루틴은 IEnumerator를 반환하 함수로 선언된다. 

IEnumerator CoroutineExample()
{
    yield return 
}

02 yield return

코루틴 함수 내에서 yield문을 사용하여 코루틴 함수의 실행을 일시 중지하고 특정 조건이 충족될때까지 대기한다.

yield return null; // 다음 프레임 까지 대기
yield return new WaitForSeconds(float); // 지정한 초 만큼 대기
yield WaitForFixedUpdate;  // 다음 FixedUpdate까지 대기

03 코루틴 시작

StartCoroutine(함수이름);

04 3초동안 지연시키는 코드 예시

void Start()
{
    StartCoroutine(CoroutineExample());
}
void Update()
{
}
IEnumerator CoroutineExample()
{
    int sec = 0;
    Debug.Log("Coroutine 시작");
    while (true)
    {
        yield return new WaitForSeconds(1.0f);
        sec++;
        Debug.Log( sec + "초");

        if (sec >= 3) break;       
    }
    Debug.Log("Coroutine 완료");
}


3. 코루틴 장점

01  작업 동시 관리

코루틴을 사용하게 되면 작업을 수행 중에도 동시에 다른 작업을 진행할 수 있다. 예를 들어 애니메이션과 네트워크 요청을 처리할 수 있다.


02 응답성 향상 및 코드의 간결성

코루틴을 사용하면 여러 단계로 이루어진  작업을 각각 분할하여 실행하면서 작업이 완료될 때까지 게임을 멈추지 않게 할 수 있다. 그렇기 때문에 게임의 응답성을 향상 시킬 수 있고, 프레임 드롭을 방지할 수 있다.


03 시간 지연 및 반복 제어

코루틴을 사용하면 위의 예시들 처럼 지연함수와 함께 특정 시간 동안 대기하거나, 반복적인 작업을 제어할 수 있다.

반응형

댓글