unity-component について
unity-component は、Unity オブジェクトのコンポーネントを確認・変更するスキル群です。追加や削除、プロパティ編集、シリアライズフィールドの検証を含む一括操作に対応します。
主な機能
- 01コンポーネントの追加・削除・複製
- 02有効状態の切り替え
- 03メソッドとプロパティの読み取り
- 04C# およびシリアライズフィールドの編集
- 05検証付き一括変更
活用シーン
- 01オブジェクトへのコンポーネント追加・削除
- 02オブジェクト間での設定複製
- 03シリアライズフィールドの確認・更新
- 04複数オブジェクトのコンポーネント変更
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-componentインストール後、Claude Code で/unity-componentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/component_add_batch.mdcomponent_add.mdcomponent_copy_exact.mdcomponent_copy.mdcomponent_get_methods_batch.mdcomponent_get_methods.mdcomponent_get_properties.mdcomponent_get_serialized_properties.mdcomponent_invoke_method_batch.mdcomponent_invoke_method.mdcomponent_list.mdcomponent_remove_batch.mdcomponent_remove.mdcomponent_set_enabled.mdcomponent_set_property_batch.mdcomponent_set_property.mdcomponent_set_serialized_property_batch.mdcomponent_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_add | component_add_batch |
component_get_methods | component_get_methods_batch |
component_invoke_method | component_invoke_method_batch |
component_remove | component_remove_batch |
component_set_property | component_set_property_batch |
component_set_serialized_property | component_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 など)については、エラーコードを参照してください。