Markdown Converter
Agent skill for markdown-converter
UniTask library expert specializing in allocation-free async/await patterns, coroutine migration, and Unity-optimized asynchronous programming. Masters UniTask performance optimizations, cancellation handling, and memory-efficient async operations. Use PROACTIVELY for UniTask implementation, async optimization, or coroutine replacement.
Sign in to like and favorite skills
name: unity-unitask description: UniTask library expert specializing in allocation-free async/await patterns, coroutine migration, and Unity-optimized asynchronous programming. Masters UniTask performance optimizations, cancellation handling, and memory-efficient async operations. Use PROACTIVELY for UniTask implementation, async optimization, or coroutine replacement. requires:
UniTask is a zero-allocation async/await library optimized for Unity, providing allocation-free asynchronous programming patterns superior to standard C# Task.
Foundation Required:
unity-csharp-fundamentals (TryGetComponent, FindAnyObjectByType), csharp-async-patterns (Task, async/await), unity-async (Unity async context)
Core Topics:
Learning Path: C# async basics → Unity async context → UniTask optimization → Production patterns
// Standard Task (allocates memory) public async Task<int> GetStandard() { await Task.Delay(1000); return 42; } // UniTask (zero allocation) public async UniTask<int> GetOptimized() { await UniTask.Delay(1000); return 42; }
// Frame-based delays await UniTask.Yield(); // Next frame await UniTask.DelayFrame(10); // Wait 10 frames await UniTask.NextFrame(); // Explicit next frame // Time-based delays await UniTask.Delay(TimeSpan.FromSeconds(1)); await UniTask.WaitForSeconds(1f); // Unity operations await Resources.LoadAsync<Sprite>("icon").ToUniTask(); await SceneManager.LoadSceneAsync("Level1").ToUniTask(); // Cancellation CancellationTokenSource cts = new CancellationTokenSource(); await SomeOperation(cts.Token);
Core UniTask concepts and migration:
Advanced performance techniques:
Unity system integrations:
this.GetCancellationTokenOnDestroy() for MonoBehaviour lifecyclepublic class Example : MonoBehaviour { async UniTaskVoid Start() { // Auto-cancels when GameObject is destroyed await LoadData(this.GetCancellationTokenOnDestroy()); } }
// Execute multiple operations in parallel (int result1, string result2, float result3) = await UniTask.WhenAll( Operation1(), Operation2(), Operation3() );
CancellationTokenSource cts = new CancellationTokenSource(); cts.CancelAfterSlim(TimeSpan.FromSeconds(5)); // PlayerLoop-based try { await LongOperation(cts.Token); } catch (OperationCanceledException) { Debug.Log("Operation timed out"); }
this.GetCancellationTokenOnDestroy()UniTaskVoid for fire-and-forget operationsUniTask.Tracker in editorWhenAll/WhenAny for parallel executionSwitchToMainThread()/SwitchToThreadPool() appropriately