Repolode
Cysharp

Cysharp/UniTask

Integración de async/await sin asignaciones para Unity que permite esperar operaciones asíncronas, coroutines y tiempos del PlayerLoop.

Estrellas
11,256
Forks
1,012
Issues abiertos
26
Último commit
hace 13 días

¿Qué es?

UniTask es un tipo de tarea específico para Unity y una integración de async/await. Ofrece UniTask<T>, basado en struct, con un generador personalizado de métodos async diseñado para evitar asignaciones, como alternativa al Task estándar. Permite esperar directamente las AsyncOperations, las coroutines y las solicitudes UnityWebRequest de Unity; además, las esperas basadas en fotogramas, como Yield, Delay y DelayFrame, sustituyen patrones habituales de coroutines.

La biblioteca se ejecuta íntegramente en el PlayerLoop de Unity, no en hilos, por lo que funciona en plataformas como WebGL y WASM. También incluye cancelación y tiempos de espera mediante CancellationToken, eventos de mensajes de MonoBehaviour y eventos de uGUI como flujos que se pueden esperar o recorrer de forma asíncrona, y LINQ asíncrono con Channel y AsyncReactiveProperty. Una ventana del editor TaskTracker ayuda a localizar tareas filtradas.

UniTask requiere Unity 2018.3 o posterior, con compatibilidad de C# 7.0 con generadores task-like, y se puede instalar mediante UPM usando una URL de git o desde una versión unitypackage.

Funciones clave

  • 01UniTask<T> basado en struct, con un generador async personalizado diseñado para evitar asignaciones.
  • 02Compatibilidad directa con await para AsyncOperation, UnityWebRequest y coroutines IEnumerator.
  • 03Yield, Delay y DelayFrame basados en PlayerLoop sustituyen las esperas habituales de coroutines.
  • 04Se ejecuta en PlayerLoop sin usar hilos, por lo que funciona en WebGL y WASM.
  • 05CancellationToken, utilidades para tiempos de espera y una ventana del editor TaskTracker para depurar filtraciones.
  • 06LINQ asíncrono, Channel y AsyncReactiveProperty para flujos asíncronos.

Casos de uso

  • Sustituir coroutines en un juego de Unity por código async/await.
  • Cargar recursos o escenas y realizar solicitudes web en secuencia o en paralelo dentro de Unity.
  • Crear proyectos de Unity para WebGL, donde no hay hilos disponibles.
  • Convertir clics de botones de uGUI o eventos de MonoBehaviour en flujos asíncronos que se puedan esperar.

Temas

Preguntas frecuentes

¿Qué es UniTask?
Integración de async/await sin asignaciones para Unity que permite esperar operaciones asíncronas, coroutines y tiempos del PlayerLoop. UniTask es un tipo de tarea específico para Unity y una integración de async/await. Ofrece UniTask<T>, basado en struct, con un generador personalizado de métodos async diseñado para evitar asignaciones, como alternativa al Task estándar. Permite esperar directamente las AsyncOperations, las coroutines y las solicitudes UnityWebRequest de Unity; además, las esperas basadas en fotogramas, como Yield, Delay y DelayFrame, sustituyen patrones habituales de coroutines.
¿UniTask es gratuito? ¿Qué licencia tiene?
UniTask es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿UniTask sigue mantenido?
Mantenimiento activo. El último commit de UniTask fue el 6 oct 2026.
¿Para qué puedo usar UniTask?
Sustituir coroutines en un juego de Unity por código async/await. Cargar recursos o escenas y realizar solicitudes web en secuencia o en paralelo dentro de Unity. Crear proyectos de Unity para WebGL, donde no hay hilos disponibles. Convertir clics de botones de uGUI o eventos de MonoBehaviour en flujos asíncronos que se puedan esperar.
¿Dónde consigo UniTask?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/Cysharp/UniTask

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados