본문 바로가기
- Unity/유니티

[Unity] IEnumerator yield return null

by david_동근 2026. 10. 27.

프로그램이 "yield return null"을 만나면 다음 프레임으로 진행하기 전에 한 프레임을 기다립니다.

레딧에서 긁어온 글이에용.

 


IEnumerator

는 Unity에서 코루틴 작성시 자주 보이는 interface(인터페이스)로,

순서대로 값을 꺼내며, 현재 어디까지 진행했는지 관리하는 객체의 인터페이스

 

입니다.

 

 

Iterator Method(이터레이터 메서드)

예를들어,

private IEnumerator Count()
{
    Debug.Log("첫 번째");
    yield return 10;

    Debug.Log("두 번째");
    yield return 20;

    Debug.Log("끝");
}

 

위 메서드에 yield return 을 Iterator Method(이터레이터 메서드)라고 합니다.

그냥 Count() 를 호출하면 본문이 실행되지 않습니다.
실행 상태를 관리할 IEnumerator 객체를 반환합니다.

IEnumerator iterator = Count();

 

여기서 해당 객체 iterator 의 MoveNext() 를 호출하면 실행이 시작됩니다.

iterator.MoveNext(); // "첫 번째" 출력, Current는 10
iterator.MoveNext(); // "두 번째" 출력, Current는 20
iterator.MoveNext(); // "끝" 출력, false 반환

 

여기서 중요한 핵심은,

  • MoveNext() 는 다음 yield return 을 만날 때까지 실행 + 값을 내놓으면 true, 실행이 끝나면 false 반환
  • Current 는 가장 최근 yield return 으로 내놓은 값을 담고 있음

yield return 에서 실행이 멈추면 지역변수와 진행위치가 유지됩니다.

MoveNext() 는 멈췄던 다음 지점부터 이어서 실행합니다.

StartCoroutine(Count());

 

즉, Count() 는 실행 상태를 가진 객체를 만들고,

StartCoroutine() 은 그 객체를 Unity 에 등록해서 실행합니다.

 

코루틴이 어떤 값을 내놓냐에 따라 Unity가 이어서 처리하는 지 결정합니다.

yield return null 다음 프레임에 이어서 실행
yield return new WaitForSeconds(1f) 게임 시간 기준으로 대기한 뒤 이어서 실행
yield return new WaitUntil(() => isReady) 조건이 충족되면 이어서 실행

 

 

아래와 같이 정리할 수 있겠습니다.

IEnumerator
는 현재 값과 진행 상태를 관리하며 순차적으로 탐색하기 위한 인터페이스다.
C#의 yield
를 사용하면 컴파일러가 실행 위치와 지역 변수를 보존하는 이터레이터를 만들어준다. Unity 코루틴은 이 구조를 활용해, 이터레이터가 반환한 값에 따라 실행을 잠시 멈추고 나중에 이어서 진행한다.

 

다음 글에서 예시와 함께 정리해 두었습니다.

https://bulletprooves.tistory.com/106

 

[Unity] IEnumerator (2)

IEnumerator 예제 코드 리뷰입니다. 이전글에서 이어집니다.https://bulletprooves.tistory.com/105 [Unity] IEnumerator yield return null프로그램이 "yield return null"을 만나면 다음 프레임으로 진행하기 전에 한 프레임

bulletprooves.tistory.com

 

'- Unity > 유니티' 카테고리의 다른 글

[Unity] IEnumerator (2)  (0) 2026.10.27
[Unity] Localization csv 로 언어별 데이터 관리하기 (2)  (0) 2026.08.12
[Unity] ExecuteAlways & ExecuteInEditMode  (0) 2026.07.21
[Unity] Sprite Atlas  (0) 2026.07.16
[Unity] Mesh - Quad 생성  (0) 2026.07.01