Saltar al contenido principal

Migración desde UniTask

Valkarn Tasks es compatible con la API de UniTask en la mayoría de los casos comunes. Esta guía cubre las diferencias.

Renombrado de tipos

UniTaskValkarn Tasks
UniTaskValkarnTask
UniTask<T>ValkarnTask<T>
UniTaskCompletionSourceValkarnTaskCompletionSource
UniTaskCompletionSource<T>ValkarnTaskCompletionSource<T>

Espacio de nombres

// Antes
using Cysharp.Threading.Tasks;

// Después
using UnaPartidaMas.Valkarn.Tasks;

Auto-cancel

UniTask requiere gestión manual de CancellationTokenSource. Valkarn Tasks lo genera automáticamente:

// UniTask (manual)
public class EnemyAI : MonoBehaviour
{
CancellationTokenSource _cts;

void OnEnable() => _cts = new CancellationTokenSource();
void OnDestroy() => _cts.Cancel();

async UniTaskVoid Chase(CancellationToken ct)
{
while (!ct.IsCancellationRequested)
{
Move();
await UniTask.Yield(ct);
}
}
}

// Valkarn Tasks (generado por código fuente)
public partial class EnemyAI : MonoBehaviour
{
async ValkarnTask Chase()
{
while (true)
{
Move();
await ValkarnTask.Yield(); // cancela automáticamente al Destroy
}
}
}

Timings de PlayerLoop

Valkarn Tasks amplía de 10 a 16 timings. Todos los timings de UniTask se mapean directamente:

UniTaskValkarn Tasks
PlayerLoopTiming.InitializationPlayerLoopTiming.Initialization
PlayerLoopTiming.LastInitializationPlayerLoopTiming.LastInitialization
PlayerLoopTiming.EarlyUpdatePlayerLoopTiming.EarlyUpdate
PlayerLoopTiming.FixedUpdatePlayerLoopTiming.FixedUpdate
PlayerLoopTiming.UpdatePlayerLoopTiming.Update
PlayerLoopTiming.LastUpdatePlayerLoopTiming.LastUpdate
PlayerLoopTiming.PreLateUpdatePlayerLoopTiming.PreLateUpdate
PlayerLoopTiming.LastPostLateUpdatePlayerLoopTiming.LastPostLateUpdate

Nuevos en Valkarn Tasks: PreUpdate, LastPreUpdate, LastPreLateUpdate, PostLateUpdate, TimeUpdate, LastTimeUpdate.

Fire-and-forget

// UniTask
UniTask.Void(async () => { ... });

// Valkarn Tasks
ValkarnTask.Forget(MyMethod());
// o decora el método:
[FireAndForget]
async ValkarnTask MyMethod() { ... }

Qué mejora en Valkarn Tasks

  • Auto-cancel vía generador de código fuente — sin código repetitivo
  • 17 reglas del analizador — detecta errores en tiempo de compilación
  • Burst / ECS — montón de temporizadores nativo, sistemas ECS asíncronos
  • 6 timings de PlayerLoop adicionales
  • Grupo consciente de hilos — sin operaciones atómicas en el hilo principal