mcpField
U
unity-component

unity-component

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

关于 unity-component

unity-component 是一组用于操作 Unity 游戏对象组件的技能,面向需要检查或修改组件的工作流。它涵盖组件增删、复制、启用状态切换及字段读写,并提供批量操作与序列化字段验证。

主要功能

  1. 01添加、移除和复制组件
  2. 02切换组件启用状态
  3. 03读取组件方法和属性
  4. 04编辑 C# 与序列化字段
  5. 05批量处理并验证更改

适用场景

  1. 01为游戏对象添加或移除组件
  2. 02在对象之间复制组件配置
  3. 03检查或更新序列化字段
  4. 04批量修改多个对象的组件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-component

安装后在 Claude Code 中输入/unity-component确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

reference/
component_add_batch.md
component_add.md
component_copy_exact.md
component_copy.md
component_get_methods_batch.md
component_get_methods.md
component_get_properties.md
component_get_serialized_properties.md
component_invoke_method_batch.md
component_invoke_method.md
component_list.md
component_remove_batch.md
component_remove.md
component_set_enabled.md
component_set_property_batch.md
component_set_property.md
component_set_serialized_property_batch.md
component_set_serialized_property.md

详细介绍

触发条件

  • 挂载或移除组件
  • 在对象间复制组件
  • 切换组件的启用状态
  • 读取/写入序列化字段
  • 挂载或移除组件、在对象间复制组件、切换组件的启用状态、读写序列化字段

Unity 组件技能

添加、移除、复制、切换组件的启用状态并编辑组件。参数来自架构(建议使用 includeSchema=true 或 /skills/schema?names=),其中会说明不明显的参数——不要根据技能名称推断。执行、dryRun 和验证规则:参阅根目录中的 SKILL.md。

操作模式

component_list、component_get_methods、component_get_methods_batch、component_get_properties、component_get_serialized_properties 属于 SemiAuto(只读);所有写入操作均属于 FullAuto。component_remove / component_remove_batch(Operation.Delete)和 component_invoke_method*(高风险)在 Semi 模式下禁止:在 Approval/Auto 模式下会返回 MODE_FORBIDDEN,只能在 Bypass 模式下运行,或命中 Allowlist → 操作模式。

通用规则

  • 目标:单对象技能接受 name、instanceId 或 path(以及可解析为路径的 entityId),匹配规则与 GameObject 相同:模糊名称有多个匹配项时返回带有 candidates 的 TARGET_NOT_FOUND;非精确匹配会列在 resolutionNotes 中。批处理项只接受 name / instanceId / path:entityId 项键会被忽略(并在 warnings 中注明),因此该项找不到目标。component_copy* 使用 source* / target* 标识符。
  • componentType(必填):类名——Rigidbody、BoxCollider,自定义脚本则使用 Namespace.ClassName。首先搜索 Unity、UI、TextMeshPro、Cinemachine 和 Input System 命名空间,然后进行不区分大小写的扫描并采用第一个匹配的类型;响应中的 component / fullTypeName 会显示解析出的类型。
  • 两套命名方案:component_set_property / component_get_properties 使用 C# 成员名称(mass、isKinematic;不区分大小写匹配,私有字段也可写入)。component_get_serialized_properties / component_set_serialized_property 使用 SerializedProperty 路径(m_Mass、items.Array.data[0];裸名称 mass 会再次尝试匹配 m_Mass)。转换时,去掉 m_ 并将首字母改为小写;将 m_ 名称传给 component_set_property 会失败并提示 "Property/field not found",同时列出可写入成员。
  • 值来源(component_set_property、其批处理接口、batch_preview_set_property):以下来源必须且只能提供一个,按 assetPath(项目资源)> referencePath(按路径指定场景对象)/ referenceName(按名称指定,取第一个匹配项)> value 的顺序检查;同时提供优先级较低的来源时会被静默忽略。不提供任何来源时,会写入该类型的默认值(0 / false / null)。
  • value 编码:数字和布尔值(true / false、1 / 0、yes / no、on / off;其他值会被拒绝)可使用 JSON 或字符串;枚举使用成员名称,不区分大小写;向量、Quaternion(3 个值 = 欧拉角,4 个值 = xyzw)、Rect(x,y,w,h)和 Bounds(cx,cy,cz,sx,sy,sz)使用逗号分隔的字符串("1,2,3");颜色可使用 "r,g,b[,a]"(取值范围 0–1)、#RRGGBB[AA] 或名称(red、green、blue、white、black、yellow、cyan、magenta、gray/grey、clear);LayerMask 可使用层名称或整数掩码。JSON 对象形式({"x":1,"y":2,"z":3}、{"r":1,"g":0,"b":0})仅适用于 Vector2/3/4 和 Color/Color32,且必须包含每个分量(颜色 a 默认为 1;显式的 null 视为缺失);部分对象、未知键和非数字值会被拒绝,并指出预期的键。
  • 回读:component_set_property 会返回从组件读取的 valueSet;只有在 setter 对值进行了截断或规范化时,才会返回 valueRequested。component_set_serialized_property 会在应用更改后重新读取。无需后续读取。
  • 属性/添加/移除批处理:全部成功或全部失败——任何一项失败都会回滚整个调用(rolledBack:true,其他项标记为 reverted:true);未知项键会列在 warnings 中。

技能概览

调用批次是非原子异步任务;详情请参阅:方法调用。

单项批次
component_addcomponent_add_batch
component_get_methodscomponent_get_methods_batch
component_invoke_methodcomponent_invoke_method_batch
component_removecomponent_remove_batch
component_set_propertycomponent_set_property_batch
component_set_serialized_propertycomponent_set_serialized_property_batch

不支持批次:component_list(类型和启用状态)、component_get_properties(C# 成员和值)、component_get_serialized_properties(Inspector 路径)、component_copy、component_copy_exact(验证每个序列化字段)、component_set_enabled(开启或关闭 Behaviour/Renderer/Collider — 并非 component_set_property)。

各技能的表格、条目字段和返回结构:reference/<skill_name>.md — 通常不需要,架构说明中已有参数信息。

请勿(常见臆造):

  • component_create / component_get 并不存在 → 使用 component_add(添加)和 component_get_properties(读取)
  • component_find 并不存在 → 使用 component_list 列出对象上的组件

精确签名

名称、参数、默认值和必填标记来自 GET /skills/schema?category=Component(或 ?names=a,b),而非此文件。

常见错误

错误触发条件 → 修复方法
TARGET_NOT_FOUND对象、组件类型、对象上的组件、成员或资源不存在 → 使用 component_list、component_get_properties、asset_find、gameobject_find。
MISSING_PARAM例如 componentType、propertyName、propertyPath → 提供该参数;错误信息(或 dryRun)会列出所有参数。
SEMANTIC_INVALID目标类型不接受某个 value、componentIndex 超出范围、某组件仍被另一个组件依赖(requiredBy:先移除这些组件),或批次中的某项执行失败 → 根据消息 / results 修复。
SKILL_ERROR只读属性 → 选择可写成员。

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

评论

支持 Markdown