Unity/개념

[Unity] 코루틴과 인보크

turbulence93 2025. 7. 31. 21:26

공통점

  • 둘 다 시간 지연 이후 동작 실행을 위해 사용된다.

Invoke

Invoke("MethodName", 2f); // 2초 후 MethodName 실행
  • 매우 간단하고 직관적.
  • 한 번만 실행되는 지연 호출에 적합.
  • 문자열 기반 호출 → 오타 발생 시 런타임 오류 가능성 있음.
  • 매개변수 전달 불가, 조건 제어 어려움.
  • 오브젝트가 비활성화 되어도 실행됌
  • InvokeRepeating을 통해 반복 가능

장점: 코드가 짧고 간편함.
단점: 유연성이 떨어짐 (취소, 반복, 조건 처리 어려움).


Coroutine

StartCoroutine(MyCoroutine());

IEnumerator MyCoroutine()
{
    yield return new WaitForSeconds(2f);
    Method();
}
  • 지연뿐 아니라 반복, 조건 제어, 단계별 흐름 제어에 유리.
  • 매개변수 전달 가능.
  • yield로 프레임 단위 제어, WaitUntil, WaitForEndOfFrame 등 다양한 제어 가능.
  • 오브젝트 비활성화시 실행 안됨

🔹 장점: 복잡한 흐름 제어에 적합, 확장성 높음.
🔹 단점: 코드가 길어질 수 있음.


요약 비교


지연 실행 가능 (Invoke) 가능 (yield return)
반복 실행 제한적 (InvokeRepeating) 자유로움 (while, for 가능)
취소 CancelInvoke() StopCoroutine()
매개변수 불가능 가능
흐름 제어 불가 조건문, 반복문 등 자유롭게 가능