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를 자주 사용하게 되며, 게임 오브젝트의 행동을 프레임 단위로 분할하여 실행할 수 있어, 애니메이션이나 대기 작업에 적합합니다.
'프로그래밍 > c#' 카테고리의 다른 글
C# 지역 함수?? 지역 함수의 예제와 활용 (0) | 2024.11.05 |
---|---|
c# 확장 메소드(Extension Method)?? 확장 메소드란 무엇인가? 사용방법과 예제 (4) | 2024.11.04 |
c# 비동기 프로그래밍 async, await (0) | 2024.10.01 |
c# 튜플? Tuple? (0) | 2024.08.01 |
c# 인덱서? Indexer? 인덱서의 특징과 예제 (0) | 2024.05.03 |
댓글