UniTask 사용하기

민혁 공부방·2025년 4월 11일

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# 비동기 개념 필요)
profile
한번 더 복습하기 위한 개인 공간입니다!

0개의 댓글