1. UniTask 란?
유니티 엔진에서, async-await 작업을 처리하기 위한 라이브러리 중 하나
async - 해당 함수가 비동기 함수임을 나타냄.
await - 비동기 작업이 끝날 때까지 기다림.
유니티는 C#을 사용합니다.
C#에서 기본적으로 제공하는 비동기 작업 메서드, Task가 존재함에도 불구하고 UniTask 를 사용하는 이유는 싱글 스레드를 사용하는 유니티 환경에서의 Task가 가지는 단점을 보완하여 강력한 비동기 작업을 구현할 수 있도록 제작한 라이브러리이기 때문입니다.
2. Coroutine과의 차이?
2-1. Coroutine의 장단점
장점
- Unity에 기본 탑재 (플러그인 없이 가능)
- 간단한 시간 지연/애니메이션/타이밍 작업에 적합
- Unity 오브젝트 생명주기와 자연스럽게 연동됨
단점
- 값을 반환하려면 복잡함
- 코드 중첩될수록 가독성 저하
- try-catch 등 예외 처리 부자연스러움
- 병렬 처리, 복잡한 흐름 처리 어려움
2-2. UniTask (async/await)의 장단점
장점
- 구조체 기반으로 제작되었기에, 메모리 할당에 최소화 되어 최적화에 유리
- 메모리 누수를 방지하기 위한 track 시스템을 제공
- await 문법으로 깔끔하고 직관적인 코드 작성 가능
- 복잡한 비동기 흐름, 연속 처리, 에러 핸들링이 쉬움
- UniTask<T>의 형태로 Return이 가능.
- 유니테스크는 오류처리와 예외처리를 간편하게 수행할 수 있도록 지원한다. Task와 유사한 방식으로 예외 처리가 가능하며, 콜백을 통해 오류 처리도 가능하다.
단점
- 외부 라이브러리 설치 필요 (Cysharp/UniTask)
- Unity 오브젝트 수명 관리 필요 (사라지면 오류날 수 있음)
- 초기 진입장벽이 조금 있음 (C# 비동기 개념 필요)