Repolode
Cysharp

Cysharp/UniTask

Unity 비동기 작업, 코루틴, PlayerLoop 타이밍을 await할 수 있는 무할당 async/await 통합

스타
11,256
포크
1,012
열린 이슈
26
마지막 커밋
13일 전

어떤 프로젝트인가요?

UniTask는 Unity 전용 태스크 타입이자 async/await 통합 라이브러리입니다. 표준 Task의 대안으로, 할당을 없애는 것을 목표로 하는 사용자 지정 async 메서드 빌더와 struct 기반 UniTask<T>를 제공합니다. Unity의 AsyncOperations, 코루틴, UnityWebRequest 요청을 직접 await할 수 있으며, Yield, Delay, DelayFrame 같은 프레임 기반 대기로 일반적인 코루틴 패턴을 대체할 수 있습니다.

이 라이브러리는 스레드가 아니라 Unity의 PlayerLoop에서만 실행되므로 WebGL, WASM 같은 플랫폼에서도 동작합니다. CancellationToken을 통한 취소와 시간 제한도 지원하며, MonoBehaviour 메시지 이벤트와 uGUI 이벤트를 await 가능한 스트림 또는 비동기 열거 가능 스트림으로 사용할 수 있습니다. Channel 및 AsyncReactiveProperty를 이용한 비동기 LINQ도 제공합니다. TaskTracker 에디터 창을 사용하면 누수된 태스크를 찾을 수 있습니다.

UniTask를 사용하려면 C# 7.0 task-like builder를 지원하는 Unity 2018.3 이상이 필요합니다. UPM git URL이나 unitypackage 릴리스로 설치할 수 있습니다.

핵심 기능

  • 01할당을 없애도록 설계된 사용자 지정 async 빌더와 struct 기반 UniTask<T>를 제공합니다.
  • 02AsyncOperation, UnityWebRequest, IEnumerator 코루틴을 직접 await할 수 있습니다.
  • 03PlayerLoop 기반 Yield, Delay, DelayFrame으로 일반적인 코루틴 대기를 대체합니다.
  • 04스레드 없이 PlayerLoop에서 실행되므로 WebGL과 WASM에서 동작합니다.
  • 05CancellationToken, 시간 제한 헬퍼, 누수를 디버깅하는 TaskTracker 에디터 창을 제공합니다.
  • 06비동기 스트림을 위한 비동기 LINQ, Channel, AsyncReactiveProperty를 제공합니다.

활용 사례

  • Unity 게임에서 코루틴을 async/await 코드로 대체하기.
  • Unity에서 에셋이나 씬을 로드하고 웹 요청을 순차적 또는 병렬로 처리하기.
  • 스레드를 사용할 수 없는 WebGL을 대상으로 Unity 프로젝트 빌드하기.
  • uGUI 버튼 클릭이나 MonoBehaviour 이벤트를 await 가능한 비동기 스트림으로 변환하기.

빠른 시작

  1. 1

    git 참조를 사용해 UPM 패키지를 설치합니다

  2. 2

    또는 릴리스 페이지에서 에셋 패키지를 가져옵니다

  3. 3

    namespace를 추가하고 Unity 작업을 await하기 시작합니다

    using Cysharp.Threading.Tasks;

사용 전 알아둘 점

  • Unity 2018.3 이상이 필요합니다(공식적으로 지원되는 최소 버전은 2018.4.13f1입니다).
  • 설치 방법으로 문서화된 것은 첫 번째 단계뿐입니다. 설치에는 독립 실행형 명령이 아니라 Unity가 필요합니다.

토픽

자주 묻는 질문

UniTask은(는) 무엇인가요?
Unity 비동기 작업, 코루틴, PlayerLoop 타이밍을 await할 수 있는 무할당 async/await 통합 UniTask는 Unity 전용 태스크 타입이자 async/await 통합 라이브러리입니다. 표준 Task의 대안으로, 할당을 없애는 것을 목표로 하는 사용자 지정 async 메서드 빌더와 struct 기반 UniTask<T>를 제공합니다. Unity의 AsyncOperations, 코루틴, UnityWebRequest 요청을 직접 await할 수 있으며, Yield, Delay, DelayFrame 같은 프레임 기반 대기로 일반적인 코루틴 패턴을 대체할 수 있습니다.
UniTask은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
UniTask은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
UniTask은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. UniTask의 마지막 커밋은 2026년 10월 6일입니다.
UniTask은(는) 어디에 사용할 수 있나요?
Unity 게임에서 코루틴을 async/await 코드로 대체하기. Unity에서 에셋이나 씬을 로드하고 웹 요청을 순차적 또는 병렬로 처리하기. 스레드를 사용할 수 없는 WebGL을 대상으로 Unity 프로젝트 빌드하기. uGUI 버튼 클릭이나 MonoBehaviour 이벤트를 await 가능한 비동기 스트림으로 변환하기.
UniTask는 어떻게 설치하나요?
git 참조를 사용해 UPM 패키지를 설치합니다 또는 릴리스 페이지에서 에셋 패키지를 가져옵니다 namespace를 추가하고 Unity 작업을 await하기 시작합니다: using Cysharp.Threading.Tasks;
UniTask은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/Cysharp/UniTask

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트