关于 unity-async
unity-async 是面向 Unity 运行时代码的文档技能,帮助选择任务调度与清理方式。它比较事件、协程、UniTask 和 Update,并强调生命周期归属与取消处理。
主要功能
- 01选择事件、回调或显式调用
- 02为短流程选择协程
- 03判断何时使用 UniTask
- 04将 Update 用于持续循环
- 05生命周期归属与取消建议
适用场景
- 01为 Unity 任务选择调度方式
- 02规划取消与清理流程
- 03减少不必要的逐帧 Update
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-async安装后在 Claude Code 中输入/unity-async确认已加载。
详细介绍
**调用此模块中的任何技能之前:**如果你准备根据技能名称或描述猜测参数后调用技能,请停止——先阅读此文件(或通过
GET /skills/recommend?includeSchema=true获取其架构)。如果你已从 recommend/schema 获取参数定义,则可以直接进行 dryRun。
触发条件
- 在 Update/协程/UniTask/定时器间取舍
- 处理取消与清理
- 在 Update/协程/UniTask/定时器间取舍、处理取消与清理
Unity 异步策略
范围:此模块讨论的是你编写并放入 Unity 运行时的异步代码——
Update、协程、UniTask、取消和生命周期所有权。它不涉及 REST 协议自身的异步任务。有关jobId/ 轮询 /job_status/GET /jobs/{id},请参阅 batch。
当用户正在决定如何调度或清理运行时工作时,请使用此技能。
护栏
模式:仅限文档——无需限制 REST 技能;在任何运行模式(Approval / Auto / Bypass)下均可自由加载。
- 不要仅仅因为 UniTask 看起来比协程更高级就推荐它。
- 优先选择适合用例的最简单调度模型。
决策顺序
- 首先确认任务是否真的需要逐帧执行。
- 如果不需要,优先使用事件、回调或显式方法调用。
- 如果需要执行一个简短的、受 Unity 管理的流程,优先使用协程。
- 仅在以下情况下推荐
UniTask:- 项目已经在使用它;或
- 用户明确提出需求并接受引入此依赖。
- 仅当确实需要持续模拟、轮询或无法由事件驱动的输入循环时,才使用
Update。
具体指导
- 如果可以采用更具事件驱动性的流程,请避免使用多个互不相关的
Update方法。 - 缓存热路径中使用的引用。
- 始终明确生命周期所有权:
- 谁启动工作
- 谁取消或停止工作
- 何时清理
- 在
MonoBehaviour中,优先使用OnEnable/OnDisable/OnDestroy,以保持订阅和取消订阅的对称性。 IDisposable主要用于纯 C# 生命周期、临时订阅或基于作用域的清理辅助工具;不要盲目用它替代 Unity 生命周期方法。
输出格式
- 推荐的调度模型
- 适用原因
- 生命周期 / 取消责任方
- 热路径风险
- 若适用,说明为何不需要更重量级的替代方案
评论
支持 Markdown