关于 unity-script
unity-script 是一组用于 Unity C# 脚本管理的技能,适合编写、检查和重构脚本的开发者。它还可在编译后返回错误诊断。
主要功能
- 01创建单个或批量脚本
- 02替换或追加脚本内容
- 03重命名、移动和删除脚本
- 04读取脚本并搜索内容
- 05获取编译反馈
适用场景
- 01为 Unity 项目添加脚本文件
- 02在多个脚本中查找代码
- 03调整脚本内容或文件布局
- 04检查编译错误及其位置
MCP 相关
这些技能可通过 MCP 客户端调用,用于读写 Unity 项目中的 C# 脚本并查询编译诊断。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-script安装后在 Claude Code 中输入/unity-script确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/script_append.mdscript_create_batch.mdscript_create.mdscript_delete.mdscript_find_in_file.mdscript_get_compile_feedback.mdscript_get_info.mdscript_list.mdscript_move.mdscript_read.mdscript_rename.mdscript_replace.md详细介绍
触发条件
- 编写或编辑 C# 代码
- 跨脚本搜索
- 重构文件布局
- 检查编译错误
- 编写或编辑 C# 代码、跨脚本搜索、重构文件布局、检查编译错误
Unity 脚本技能
创建、编辑、移动和检查 C# 脚本,并获取编译结果。参数以 schema 为准(建议使用 includeSchema=true 或 /skills/schema?names=),其中注明了不明显的参数,而非技能名称。执行和 dryRun 规则:根目录中的 SKILL.md。
操作模式
只读的 SemiAuto 技能在所有模式下都可直接运行:script_read、script_list、script_find_in_file、script_get_info、script_get_compile_feedback。全部 7 个写入工具——script_create、script_create_batch、script_replace、script_append、script_rename、script_move、script_delete——均为 MayTriggerReload + RiskLevel:"high"(写入 .cs 文件会触发域重载;script_delete 也属于 Delete),因此在 NeverInSemi 模式下不可用:Approval 和 Auto 都会返回 MODE_FORBIDDEN,只有 Bypass 或命中 Allowlist 时才会运行。切勿为这些工具请求授权 → 操作模式。
编译与重载
- 每次写入都会立即返回:
{success, status: "accepted", path, jobId, waitUrl, serverAvailability};随后进行编译,域重载期间服务会短暂无法访问。 - 通过一次调用即可获取编译结果:GET 返回的
waitUrl(/jobs/<jobId>?wait=90),例如curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "http://localhost:<port>/jobs/<jobId>?wait=90"。编译结束后会返回结果:任务status为completed,或在编译出错时为failed,诊断信息位于resultData.compilation(isCompiling、hasErrors、errorCount、errors: [{type, message, file, line}])。重载期间请求可能被拒绝或返回503:请重复使用相同 URL;waitTimedOut: true表示需要再次 GET 该 URL。 script_get_compile_feedback(scriptPath)可按需返回相同的诊断信息。请先修复错误:只有编译通过后,component_add才能找到新的 MonoBehaviour。checkCompile: false会跳过诊断;diagnosticLimit用于限制诊断数量(默认值为 20)。
通用规则
scriptName是文件名和类名,不包含.cs或路径分隔符。路径(folder、scriptPath、newFolder)均相对于项目,须以Assets/或Packages/开头;若文件夹不存在则会创建。绝不会覆盖现有文件(Script already exists)。- 若提供
content,script_create会原样写入(此时会忽略template/namespaceName,并给出警告);否则会填充模板——MonoBehaviour(默认)、ScriptableObject、Editor、EditorWindow(后两者默认位于Assets/Editor)——如果设置了namespaceName,还会将其包裹在相应命名空间中。其他裸名称都会被拒绝(validValues列出这四种名称);包含代码的文本会被视为字面模板,并填充{CLASS}/{NAMESPACE},但自定义类应使用content。只有当类名与文件名一致时,MonoBehaviour 或 ScriptableObject 才会绑定到对应文件;若 content 未声明此类类型,则会给出警告。 - 新建 2 个或更多脚本 → 使用
script_create_batch:只需执行一次域重载,而非 N 次。
技能概览
- 写入:
script_create、script_create_batch、script_replace(查找/替换,纯文本或正则表达式)、script_append(插入行)、script_rename(仅重命名文件;其中的类不会重命名)、script_move(创建目标文件夹)、script_delete。 - 读取:
script_read、script_list、script_find_in_file(逐行进行纯文本或正则表达式查找)、script_get_info(类、基类、公共成员)、script_get_compile_feedback。
各技能的表格和返回结构:reference/<skill_name>.md — 很少需要查阅,参数见架构说明。
不要(常见幻觉):
- 不存在
script_edit/script_update→ 查找并替换请使用script_replace - 不存在
script_write→ 新建文件请使用script_create,修改现有文件请使用script_replace
其他情况:已编译脚本的 API 分析 → script_analyze(感知)。
精确签名
名称、参数、默认值和必填标记以 GET /skills/schema?category=Script(或 ?names=a,b)为准,而非本文件。
常见错误
| 错误 | 触发条件 → 修复方法 |
|---|---|
MISSING_PARAM | 例如缺少 scriptName、pattern、find、newName → 补上对应参数;错误消息(或 dryRun)会列出所有参数。 |
SEMANTIC_INVALID | scriptName / newName 中包含路径分隔符、路径位于 Assets/ / Packages/ 之外,或脚本已存在 → 修正名称或路径,或重命名/移动现有文件。 |
TARGET_NOT_FOUND | 找不到脚本、MonoScript 或文件夹 → 使用 script_list / asset_find 查找正确的 scriptPath。 |
SKILL_ERROR | 文件系统或 AssetDatabase 移动/重命名/删除失败 → 阅读错误消息,解决问题后重试。 |
传输代码(COMPILING、RATE_LIMIT 等)→ 错误代码。