Unity/C# 학습

Unity Coroutine 개념과 사용법

리저브콜드브루 2025. 8. 4. 18:20
반응형

게임을 개발하다 보면, 어떤 동작을 몇 초 후에 실행하거나, 특정 조건이 만족될 때까지 기다리거나, 프레임마다 반복 실행해야 하는 상황이 자주 생깁니다.

이럴 때 유용한 기능이 바로 Unity의 Coroutine(코루틴) 입니다.

 

Coroutine이란?

Coroutine은 Unity에서 비동기 처리를 가능하게 해주는 C# 기반의 유니티 전용 기능입니다.

일반적인 C# 함수는 동기적으로 실행되지만, Coroutine은 일시 정지/재개가 가능한 함수로, 시간 기반 흐름을 직접 제어할 수 있습니다.

 

Coroutine 기본 구조

IEnumerator WaitAndPrint()
{
    Debug.Log("시작");
    yield return new WaitForSeconds(2f);
    Debug.Log("2초 후 실행");
}

// 호출 방식
StartCoroutine(WaitAndPrint());
  • IEnumerator 반환형을 사용해야 함
  • yield return으로 흐름을 멈추고 특정 조건까지 대기
  • StartCoroutine()으로 실행

 

Unity 게임에서 자주 쓰이는 예시

상황 : 공격 쿨타임

설명 :  일정 시간 대기 후 다시 공격 가능

IEnumerator AttackCooldown()
{
    canAttack = false;
    yield return new WaitForSeconds(1.5f);
    canAttack = true;
}

 

자주 쓰이는 yield return 종류

  • new WaitForSeconds(t): t초 대기
  • null: 다음 프레임까지 대기
  • new WaitUntil(() => 조건): 조건이 참이 될 때까지 대기
  • new WaitWhile(() => 조건): 조건이 거짓이 될 때까지 대기

Coroutine 중단하기

Coroutine routine;

void Start()
{
    routine = StartCoroutine(DoSomething());
}

void StopEarly()
{
    StopCoroutine(routine); // 중단
}
  • 특정 코루틴만 중단: StopCoroutine()
  • 전체 중단: StopAllCoroutines()

 

정리

  • Coroutine은 Unity에서 시간 기반 제어나 반복 동작을 위해 반드시 필요한 기능
  • 일반적인 함수로는 불가능한 "일시 정지 + 재개" 흐름이 가능
  • 게임 내에서 연출, 타이밍, 비동기 처리를 매끄럽게 구현할 수 있음
728x90
반응형