Repolode
Cysharp

Cysharp/UniTask

Integração de async/await sem alocações para Unity, que permite aguardar operações assíncronas, corrotinas e intervalos do PlayerLoop.

Estrelas
11,256
Forks
1,012
Issues abertas
26
Último commit
há 13 dias

O que é?

UniTask é um tipo de task e uma integração de async/await específicos para Unity. Ele oferece um UniTask<T> baseado em struct, com um builder de métodos assíncronos personalizado que busca eliminar alocações, como alternativa ao Task padrão. É possível aguardar diretamente AsyncOperations, corrotinas e requisições UnityWebRequest, e esperas baseadas em frames, como Yield, Delay e DelayFrame, substituem padrões comuns de corrotinas.

A biblioteca funciona inteiramente no PlayerLoop do Unity, sem usar threads, por isso é compatível com plataformas como WebGL e WASM. Ela também oferece suporte a cancelamento e timeouts com CancellationToken, eventos de mensagens do MonoBehaviour e eventos do uGUI como streams aguardáveis ou async-enumerable, além de LINQ assíncrono com Channel e AsyncReactiveProperty. Uma janela do editor TaskTracker ajuda a localizar tasks vazadas.

UniTask requer Unity 2018.3 ou mais recente, com suporte a builders do tipo task do C# 7.0, e pode ser instalado pelo UPM via URL do Git ou por uma versão unitypackage.

Recursos principais

  • 01UniTask<T> baseado em struct, com um builder async personalizado projetado para não gerar alocações.
  • 02Suporte direto a await para AsyncOperation, UnityWebRequest e corrotinas IEnumerator.
  • 03Yield, Delay e DelayFrame baseados no PlayerLoop substituem esperas comuns de corrotinas.
  • 04Funciona no PlayerLoop sem threads, sendo compatível com WebGL e WASM.
  • 05CancellationToken, utilitários de timeout e uma janela do editor TaskTracker para depurar vazamentos.
  • 06LINQ assíncrono, Channel e AsyncReactiveProperty para streams assíncronos.

Casos de uso

  • Substituir corrotinas em um jogo Unity por código com async/await.
  • Carregar assets ou cenas e fazer requisições web em sequência ou em paralelo dentro do Unity.
  • Criar projetos Unity para WebGL, onde threads não estão disponíveis.
  • Converter cliques em botões do uGUI ou eventos do MonoBehaviour em streams assíncronos aguardáveis.

Tópicos

Perguntas frequentes

O que é UniTask?
Integração de async/await sem alocações para Unity, que permite aguardar operações assíncronas, corrotinas e intervalos do PlayerLoop. UniTask é um tipo de task e uma integração de async/await específicos para Unity. Ele oferece um UniTask<T> baseado em struct, com um builder de métodos assíncronos personalizado que busca eliminar alocações, como alternativa ao Task padrão. É possível aguardar diretamente AsyncOperations, corrotinas e requisições UnityWebRequest, e esperas baseadas em frames, como Yield, Delay e DelayFrame, substituem padrões comuns de corrotinas.
UniTask é gratuito? Qual é a licença?
UniTask é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
UniTask ainda é mantido?
Manutenção ativa. O último commit de UniTask foi em 6 de out. de 2026.
Para que posso usar UniTask?
Substituir corrotinas em um jogo Unity por código com async/await. Carregar assets ou cenas e fazer requisições web em sequência ou em paralelo dentro do Unity. Criar projetos Unity para WebGL, onde threads não estão disponíveis. Converter cliques em botões do uGUI ou eventos do MonoBehaviour em streams assíncronos aguardáveis.
Onde consigo UniTask?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/Cysharp/UniTask

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados