mcpField
U
unity-script

unity-script

github.com/besty0728开发1.9k84 次安装今天更新
代码仓库

关于 unity-script

unity-script 是一组用于 Unity C# 脚本管理的技能,适合编写、检查和重构脚本的开发者。它还可在编译后返回错误诊断。

主要功能

  1. 01创建单个或批量脚本
  2. 02替换或追加脚本内容
  3. 03重命名、移动和删除脚本
  4. 04读取脚本并搜索内容
  5. 05获取编译反馈

适用场景

  1. 01为 Unity 项目添加脚本文件
  2. 02在多个脚本中查找代码
  3. 03调整脚本内容或文件布局
  4. 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.md
script_create_batch.md
script_create.md
script_delete.md
script_find_in_file.md
script_get_compile_feedback.md
script_get_info.md
script_list.md
script_move.md
script_read.md
script_rename.md
script_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_INVALIDscriptName / newName 中包含路径分隔符、路径位于 Assets/ / Packages/ 之外,或脚本已存在 → 修正名称或路径,或重命名/移动现有文件。
TARGET_NOT_FOUND找不到脚本、MonoScript 或文件夹 → 使用 script_list / asset_find 查找正确的 scriptPath。
SKILL_ERROR文件系统或 AssetDatabase 移动/重命名/删除失败 → 阅读错误消息,解决问题后重试。

传输代码(COMPILING、RATE_LIMIT 等)→ 错误代码。

评论

支持 Markdown