About this project

UniTask is a high-performance async/await library for Unity, designed to replace traditional coroutines and Task-based async operations with zero allocation. It provides struct-based `UniTask<T>` and custom AsyncMethodBuilder, making all Unity AsyncOperations and coroutines awaitable. Key features include PlayerLoop-based tasks like `UniTask.Yield` and `UniTask.DelayFrame`, cancellation and timeout handling via `CancellationToken`, progress reporting with lightweight `Progress` class, and a TaskTracker window to prevent memory leaks. It supports asynchronous LINQ, Channel, and AsyncReactiveProperty, and is compatible with .NET Standard 2.1's ValueTask/IValueTaskSource. UniTask runs entirely on Unity's PlayerLoop, avoiding threads, and works on WebGL and wasm. It offers utilities like `WhenAll`, `WhenAny`, and `WhenEach`, and can convert to/from standard tasks and coroutines. Installation is via UPM or asset package, requiring Unity 2018.3 or later.