프로그램이 "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 |