[ 개발 공부 ] 싱글 스레드에서 비동기 방식을 구현하는 방법 in Unity Coroutine
2024. 5. 16. 16:00ㆍ게임 개발/개발 공부
이번에는 Unity Coroutine이 싱글 스레드에서 비동기 방식을 구현한 방법을 알아볼 것입니다.
이를 위해서는 IEnumerator에 대해서 알아야 할 필요가 있습니다.
IEnumerator에 대해서 -> 링크
IEnumerator에 대해서 알고있다면, 어느 정도 감이 잡혔을 수도 있는데
Unity Coroutine에서 StartCoroutine이 실행하는 메서드는 IEnumerator를 반환합니다.
// 대충 클래스 내부
private void Start()
{
StartCoroutine(DoTest);
}
IEnumerator DoTest()
{
yield return null;
// 제어권을 옮기고 다음 LateUpdate부터 조건 체크, 조건이 Null이기에 다음 프레임에 다음 구문이 실행됨.
yield return new WaitForSeconds(1.0f);
// 제어권을 옮기고 다음 LateUpdate부터 조건 체크, 조건이 WaitForSeconds(1.0f)이기에 1초 후 다음 구문 실행
}
yield return 부분에서 제어권을 Unity 내부에 있는 DelayedCallManager에 반환합니다.
이후 다음 프레임부터 DelayedCallManager에서 LateUpdate 타이밍에 yield return에 있던 조건이 만족되었는지 확인 후 조건 만족 시 다음 구문을 실행합니다. 실행 중 yield return부분을 만나면 다시 DelayedCallManager에 제어권을 반환합니다.
이러한 방식으로 Unity Coroutine이 싱글 스레드에서 비동기 방식으로 굴러갑니다.
'게임 개발 > 개발 공부' 카테고리의 다른 글
[ 개발 공부 ] Unity Batching 개념 (0) | 2024.05.20 |
---|---|
[ 개발 공부 ] Unity Coroutine의 동작 원리 및 특징 (0) | 2024.05.17 |
[ 개발 공부 ] IEnumerator, IEnumerable (0) | 2024.05.15 |
[ 개발 공부 ] 퀵 정렬 ( Quick Sort ) 방법 (0) | 2024.05.14 |
[ 개발 공부 ] 여러 가지 데이터 표기법, + Unity 표준 코딩 컨벤션 (0) | 2024.05.12 |