본문 바로가기
Unity

유니티에서 yield break 와 코루틴에서 제거되는 시점

by Oz Driver 2025. 7. 2.

Unity에서 코루틴은 IEnumerator 객체를 통해 실행되며, Unity는 이 객체들을 내부적으로 리스트에 등록하여 매 프레임마다 검사하고 실행 조건이 충족되면 이어서 실행합니다.

 

yield break 란?

yield break는 코루틴 내부에서 즉시 실행을 종료하는 명령어입니다.
이것이 실행되면 Unity는 해당 코루틴을 더 이상 실행하지 않도록 처리하며, 코루틴 리스트에서 안전하게 제거합니다.

IEnumerator MyRoutine()
{
    Debug.Log("Start");

    if (SomethingWrong())
    {
        Debug.Log("문제 발생 → 코루틴 중단");
        yield break;
    }

    yield return new WaitForSeconds(1f);
}

 

그럼 언제 코루틴에서 제거될까?

yield break가 호출되면 Unity는 그 순간 “이 코루틴은 끝났다”는 신호를 받게 됩니다. 

코루틴 리스트에서 제거되는 정확한 시점은 해당 프레임의 마지막이 아니라 다음 프레임의 코루틴 실행 루틴이 시작되면서 진행 조건 검사를 할 때, 이 시점에 더 이상 실행할 수 없다고 판단되면 리스트에서 제거됩니다.

즉, 현재 프레임에서는 대기 상태로 남아있다가, 다음 프레에서 완전히 제거됩니다.

 

 

코루틴의 실행도 제거도 모두 Update ~ LateUpdate 사이에서 이루어집니다. 

 

정리

• 유니티는 IEnumerator 기반으로 코루틴을 리스트에 등록하여 관리합니다.

  yield break 는 코루틴을 즉시 종료하고, 다음 프레임에서 완전히 제거됩니다.