본문 바로가기
프로그래밍/c#

Unity c#에서 자주 사용하는 코루틴: IEnumerator와 IEnumerable 차이점 쉽게 이해하기

by 지나팩 2024. 11. 14.

Unity에서 코루틴(Coroutine)은 비동기 작업을 처리할 때 자주 사용됩니다.

코루틴은 게임 오브젝트의 행동을 프레임 단위로 분할하여 실행할 수 있어,

대기 시간이나 반복적인 작업을 처리하는 데 매우 유용합니다.

 

 

 

이때 사용되는 것이 바로 IEnumerator입니다.

하지만 IEnumerator와 함께 자주 언급되는 IEnumerable의 차이점을 명확히 이해하는 것이 중요합니다.

 

 

 

 

 

 

Unity에서의 IEnumerator와 코루틴

Unity에서는 IEnumerator를 사용하여 코루틴을 정의할 수 있습니다. 코루틴은 IEnumerator 메소드를 통해 정의되며, yield return 구문을 사용해 중간에 대기 시간을 추가할 수 있습니다.

코루틴 예제:

 

 

  • WaitAndPrint 메소드는 IEnumerator 타입이며, 코루틴으로 사용됩니다.
  • yield return을 통해 2초 동안 대기한 후 다음 코드가 실행됩니다.
  • StartCoroutine()을 통해 코루틴을 시작합니다.

 

IEnumerator와 IEnumerable의 차이점

 

 

 

 

 

 

 

 

IEnumerator란?

IEnumerator는 반복자(iterator) 인터페이스로, 컬렉션의 요소를 하나씩 탐색하거나 코루틴의 흐름을 제어할 때 사용됩니다. Unity에서 코루틴은 IEnumerator 메소드를 통해 정의되며, yield return 키워드를 사용해 비동기 작업을 수행할 수 있습니다.

주요 특징:

  • MoveNext() 메소드: 다음 요소로 이동하거나, 다음 코루틴 실행 단계로 이동합니다.
  • Current 속성: 현재 요소나 현재 상태를 반환합니다.
  • Reset() 메소드: 반복자를 처음 상태로 되돌립니다.

 

IEnumerable란?

IEnumerable는 컬렉션이 반복 가능(iterable)하도록 만드는 인터페이스입니다. IEnumerable를 구현한 클래스는 GetEnumerator() 메소드를 통해 IEnumerator 객체를 반환하며, 이를 통해 컬렉션의 요소를 반복할 수 있습니다.

주요 특징:

  • GetEnumerator() 메소드: IEnumerator 객체를 반환합니다.
  • foreach 루프에서 사용 가능: IEnumerable를 구현한 컬렉션은 foreach 루프에서 쉽게 반복할 수 있습니다.

 

 

실전 예제: Unity에서 IEnumerator와 IEnumerable 사용하기

Unity에서는 주로 코루틴에서 IEnumerator를 사용하지만, IEnumerable도 컬렉션 반복에서 사용할 수 있습니다.

코루틴과 IEnumerator 예제:

 

 

 

  • 코루틴은 IEnumerator를 통해 정의되며, yield return으로 중간에 대기 시간을 추가할 수 있습니다.
  • Unity에서는 IEnumerator 메소드만 코루틴으로 사용할 수 있습니다.

 

 

 

 

 

 

IEnumerable 예제:

 

  • IEnumerable 인터페이스는 GetEnumerator() 메소드를 통해 IEnumerator를 반환합니다.
  • foreach 루프를 통해 컬렉션의 요소를 쉽게 반복할 수 있습니다.

 

  • IEnumerable는 컬렉션이 반복 가능하도록 해주며, foreach 루프에서 주로 사용됩니다.
  • IEnumerator는 컬렉션의 요소를 하나씩 탐색하거나, Unity에서 코루틴의 비동기 작업을 제어할 때 사용됩니다.
  • Unity에서는 코루틴을 통해 IEnumerator를 자주 사용하게 되며, 게임 오브젝트의 행동을 프레임 단위로 분할하여 실행할 수 있어, 애니메이션이나 대기 작업에 적합합니다.

 

 

댓글