mcpField
U
unity-component

unity-component

github.com/besty0728開発1.9k84 回インストール今日更新
リポジトリ

unity-component について

unity-component は、Unity オブジェクトのコンポーネントを確認・変更するスキル群です。追加や削除、プロパティ編集、シリアライズフィールドの検証を含む一括操作に対応します。

主な機能

  1. 01コンポーネントの追加・削除・複製
  2. 02有効状態の切り替え
  3. 03メソッドとプロパティの読み取り
  4. 04C# およびシリアライズフィールドの編集
  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*(高リスク)は NeverInSemi です。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 に解決された型が示されます。
  • 2 つの命名方式: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_ を削除して先頭の文字を小文字にします。component_set_property に m_ で始まる名前を送ると「Property/field not found」エラーになり、書き込み可能なメンバーが一覧表示されます。
  • 値のソース(component_set_property、そのバッチ、batch_preview_set_property):assetPath(プロジェクトアセット)> referencePath(パスで指定するシーンオブジェクト)/ referenceName(名前で指定し、最初に一致したもの)> value のうち、正確に 1 つを指定します。指定された順に確認されます。優先順位が低い値を併せて送信しても、黙って無視されます。どれも送信しない場合は、型のデフォルト値(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 を返します。また、セッターによって値が制限または正規化された場合に限り、valueRequested も返します。component_set_serialized_property は適用後に再読み込みします。追加の読み取りは不要です。
  • プロパティ/追加/削除のバッチ処理:すべて一括で処理され、1 つでも項目が失敗すると呼び出し全体がロールバックされます(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 など)については、エラーコードを参照してください。

コメント