Unity Async Strategy
unity-async
Unity async and lifecycle strategy advisor. Use when users want to choose between Update, coroutine, UniTask, timers, or handle cleanup/cancellation. Triggers: async, coroutine, UniTask, await, Update vs coroutine, timer, lifecycle, IDisposable, cancellation, 异步, 协程, 生命周期, 用协程还是UniTask, 异步怎么写, 定时...
SKILL.md
Full skill instructions
Unity Async Strategy
Use this skill when the user is deciding how runtime work should be scheduled or cleaned up.
Guardrails
Mode: Documentation only — no REST skills to gate; load freely under any operating mode (Approval / Auto / Bypass).
- Do not recommend
UniTaskjust because it looks more advanced than coroutine. - Prefer the simplest scheduling model that fits the use case.
Decision Ladder
- First ask whether the task needs per-frame work at all.
- If not, prefer events, callbacks, or explicit method calls.
- If a short Unity-bound sequence is needed, prefer coroutine.
- Recommend
UniTaskonly when:- the project already uses it, or
- the user explicitly wants it and accepts the dependency.
- Use
Updateonly for true continuous simulation, polling, or input loops that cannot be event-driven.
Specific Guidance
- Avoid many unrelated
Updatemethods if a more event-driven flow works. - Cache references used in hot paths.
- Always define lifecycle ownership:
- who starts the work
- who cancels or stops it
- when it is cleaned up
- In
MonoBehaviour, preferOnEnable/OnDisable/OnDestroyfor subscribe-unsubscribe symmetry. - Use
IDisposablemainly for pure C# lifetimes, temporary subscriptions, or scope-based cleanup helpers, not as a cargo-cult replacement for Unity lifecycle methods.
Output Format
- Recommended scheduling model
- Why it fits
- Lifecycle / cancellation owner
- Hot-path risks
- Why the heavier alternative is unnecessary, if applicable
