dh_0e

[C#] 코루틴(Coroutine) 본문

C#

[C#] 코루틴(Coroutine)

dh_0e 2026. 1. 13. 14:00

코루틴(Coroutine)

  • 정의: 실행을 잠시 중단(Suspend)하고 제어권을 유니티에 양보했다가, 원하는 시점에 중단된 지점부터 다시 실행을 재개(Resume)할 수 있는 특별한 함수
  • 비동기적 동작(Asynchronous-like): 멀티스레드는 아니지만, 마치 별도의 스레드에서 돌아가는 것처럼 시간에 따른 처리를 분산해서 수행함
  • 협력적 멀티태스킹(Cooperative Multitasking): 함수 스스로가 "나 여기서 잠시 쉴게"라고 yield를 호출하여 메인 루프에 실행 권한을 넘겨주는 방식
  • 상태 저장: 일반 함수는 종료되면 지역 변수가 사라지지만, 코루틴은 중단된 시점의 모든 상태(변수 값, 실행 라인)를 기억함

 

명령어

  • IEnumerator: 코루틴의 반환 타입. "순서대로 실행할 목록을 들고 있는 가이드"라고 볼 수 있음
  • yield
    • return: "여기서 일단 멈춰!"라는 신호로, 뒤에 오는 조건(WaitForSeconds 등)에 따라 다시 돌아올 시점을 결정함
    • break: 코루틴을 즉시 종료하는 명령어로, 일반 함수에서 return의 역할을 함
  • StartCoroutine(): 코루틴을 실행하는 전용 엔진. 코루틴은 일반 함수처럼 이름만 부르면 작동하지 않고, StartCoroutine()을 사용하여 호출해야 함
  • using System.Collections: System.Collections 네임스페이스를 가져와야 사용할 수 있음

ex) 실행 후 5초 뒤에 콘솔 출력

using UnityEngine;
using System.Collections;
public class test : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(Call());
    }

    IEnumerator Call(){
        yield return new WaitForSeconds(5f);
        print("5 seconds passed");
    }
}