[Unity] 코루틴과 UniTask의 차이
Unity에서 일정 시간 기다린 후 동작하거나 여러 프레임에 걸쳐 작업을 처리할 때 코루틴(Coroutine)과 UniTask를 사용할 수 있다.
코루틴이란?
코루틴은 Unity에서 제공하는 기능으로, 하나의 작업을 여러 프레임에 나누어 실행할 수 있다.
yield return을 만나면 코루틴의 실행을 잠시 중단하고, 일정 시간이 지나거나 다음 프레임이 되었을 때 이어서 실행한다.
IEnumerator Delay()
{
yield return new WaitForSeconds(1f);
Debug.Log("1초 후 실행");
}
코루틴은 별도의 스레드에서 실행되는 것이 아니라 기본적으로 메인 스레드에서 동작한다. 따라서 무거운 연산을 코루틴으로 처리한다고 해서 연산 자체가 빨라지는 것은 아니다.
UniTask란?
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] PC 세이브 데이터 Android로 옮기기](https://data.develog.develrocket.com/upload/develog/muchan/1792206352286-hd4xz4/_____2026-10-17_114953.png)
![[Unity] 제네릭 박싱 예방](https://data.develog.develrocket.com/upload/develog/gmumdev/1792123312021-bhxx2i/_____.png)