[Unity] 코루틴과 UniTask의 차이
본문 로딩 중...
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Unity에서 일정 시간 기다린 후 동작하거나 여러 프레임에 걸쳐 작업을 처리할 때 코루틴(Coroutine)과 UniTask를 사용할 수 있다.
코루틴은 Unity에서 제공하는 기능으로, 하나의 작업을 여러 프레임에 나누어 실행할 수 있다.
yield return을 만나면 코루틴의 실행을 잠시 중단하고, 일정 시간이 지나거나 다음 프레임이 되었을 때 이어서 실행한다.
IEnumerator Delay()
{
yield return new WaitForSeconds(1f);
Debug.Log("1초 후 실행");
}
코루틴은 별도의 스레드에서 실행되는 것이 아니라 기본적으로 메인 스레드에서 동작한다. 따라서 무거운 연산을 코루틴으로 처리한다고 해서 연산 자체가 빨라지는 것은 아니다.
UniTask는 Unity에서 C#의 async/await 방식을 효율적으로 사용할 수 있도록 만들어진 라이브러리이다.
async UniTask Delay()
{
await UniTask.Delay(1000);
Debug.Log("1초 후 실행");
}
코루틴의 yield return 대신 await을 사용하며, 여러 비동기 작업이 연결되는 경우 코드의 흐름을 보다 직관적으로 표현할 수 있다.
| Coroutine | UniTask |
|---|---|
| Unity에서 기본 제공 | 외부 라이브러리 |
| IEnumerator 사용 | UniTask 사용 |
| yield return 사용 | async/await 사용 |
| 간단한 대기나 연출 처리에 편리 | 복잡한 비동기 흐름 관리에 편리 |
둘 다 일정 시간 기다리거나 작업의 실행을 나누어 처리할 때 사용할 수 있다.
간단한 시간·프레임 기반 처리는 코루틴이 편리하고, 여러 비동기 작업을 연결하거나 관리해야 할 때는 UniTask를 활용할 수 있다.
또한 UniTask에서 async/await을 사용한다고 해서 반드시 별도의 스레드에서 실행되는 것은 아니다.
![[Unity] LOD](https://data.develog.develrocket.com/upload/develog/user_1777093328305/1789912609623-ww36y9/_____2026-09-20_225147.png)