unity-smart について
unity-smart は Unity のシーンオブジェクトを検索し、配置や参照を扱うスキルモジュールです。プロパティ・空間検索、参照の設定、トランスフォーム操作に対応し、読み取り専用と変更操作の実行権限を区別します。
主な機能
- 01コンポーネントのプロパティで検索
- 02空間範囲によるオブジェクト抽出
- 03オブジェクトの配置と均等分散
- 04参照の設定とトランスフォーム調整
- 05読み取り専用操作と変更操作の権限分離
活用シーン
- 01条件に合うコンポーネントを検索
- 02シーン内の指定範囲のオブジェクトを特定
- 03選択オブジェクトの配置を整理
- 04一致するオブジェクトでコンポーネントのリストを設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-smartインストール後、Claude Code で/unity-smartを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明からパラメーターを推測してスキルを呼び出そうとしている場合は、いったん止めて、このファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からすでにパラメーター定義を取得している場合は、そのまま dryRun に進めます。
トリガー
- 条件または近接関係に基づくシーンオブジェクトの検索
- オブジェクトの自動配置
- 参照の自動接続
- 按条件或邻近关系查询场景对象、自动排布对象、自动连线引用
Unity Smart Skills
動作モード
- Approval:このモジュールは Mixed です。読み取り専用のクエリスキル
smart_scene_query/smart_scene_query_spatial(ReadOnly = true、Mode = SkillMode.SemiAutoと指定)は直接実行できます。それ以外のレイアウト/バインド/変換系スキル(smart_scene_layout/smart_reference_bind/smart_align_to_ground/smart_distribute/smart_snap_to_grid/smart_randomize_transform/smart_select_by_component)はSkillMode.FullAutoのため、ユーザーの許可を得てから実行結果を返す必要があります。 - Auto / Bypass:直接実行します。
- NeverInSemi を含む高リスクスキル:
smart_replace_objects(Operation.Modify|Delete。元のオブジェクトを置き換えて削除します)。このスキルは Approval/Auto ではMODE_FORBIDDENを返し、Bypass または Allowlist に該当する場合にのみ呼び出せます。
禁止事項(よくある誤り):
smart_create/smart_buildは存在しません → smart skills はクエリ/レイアウトツールであり、作成ツールではありませんsmart_search/smart_queryは存在しません →smart_scene_query(コンポーネントのプロパティーフィルター)またはsmart_scene_query_spatial(空間領域フィルター)を使用してくださいsmart_moveは存在しません →smart_snap_to_gridまたはsmart_align_to_groundを使用してください
振り分け:
- オブジェクトの作成には →
gameobjectモジュールを使用 - 簡単なオブジェクト検索には →
gameobject_findまたはscene_find_objectsを使用 - 複雑なシーンクエリ(SQL のようなクエリ)には →
smart_scene_query(このモジュール)を使用
スキル
smart_scene_query
コンポーネントのプロパティー値に基づいてオブジェクトを検索します(SQL のようなクエリ)。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
componentName | string | はい | - | コンポーネントの型(Light、Camera、MeshRenderer) |
propertyName | string | はい | - | クエリ対象のプロパティー(intensity、enabled など) |
op | string | いいえ | "==" | ==、!=、>、<、>=、<=、contains |
value | string | いいえ | null | 比較する値 |
limit | int | いいえ | 50 | 最大結果数 |
query | string | いいえ | null | サポートされていない省略形式です。単独で指定すると、ガイダンスエラーが返されます |
未知の propertyName、リストにない op、数値以外のメンバーまたは数値以外の value に対する >/</>=/<=、bool に対する ==/!= 以外の演算子は、何も一致しないまま処理されるのではなく、SEMANTIC_INVALID で拒否されます(メンバー名の誤記には、最も近い名前の候補が提示されます)。
例:
# Find all lights with intensity > 2
call_skill("smart_scene_query", componentName="Light", propertyName="intensity", op=">", value="2")
smart_scene_layout
選択したオブジェクトをレイアウトに配置します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
layoutType | string | いいえ | "Linear" | Linear、Grid、Circle、Arc |
axis | string | いいえ | "X" | X、Y、Z、-X、-Y、-Z |
spacing | float | いいえ | 2.0 | 項目間の間隔(または半径) |
columns | int | いいえ | 3 | Grid レイアウト用 |
arcAngle | float | いいえ | 180 | Arc レイアウト用(度) |
lookAtCenter | bool | いいえ | false | 中心を向くように回転します |
例:
# Arrange selected objects in a circle
call_skill("smart_scene_layout", layoutType="Circle", spacing=5)
smart_reference_bind
一致するオブジェクトで List/Array フィールドを自動入力します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
targetName | string | はい | - | 対象の GameObject |
componentName | string | いいえ | - | 対象上のコンポーネント |
fieldName | string | はい | - | 入力するフィールド |
sourceTag | string | いいえ | null | タグで検索 |
sourceName | string | いいえ | null | 名前に指定文字列を含むオブジェクトを検索 |
appendMode | bool | いいえ | false | 置換せずに追加 |
例:
# Fill GameManager.spawns with all SpawnPoint tagged objects
call_skill("smart_reference_bind", targetName="GameManager", componentName="GameController", fieldName="spawns", sourceTag="SpawnPoint")
smart_scene_query_spatial
球体/ボックス領域内のオブジェクトを検索します。コンポーネントで絞り込むこともできます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
x | float | はい | - | 中心の X 座標 |
y | float | はい | - | 中心の Y 座標 |
z | float | はい | - | 中心の Z 座標 |
radius | float | いいえ | 10 | 検索する球体の半径 |
componentFilter | string | いいえ | null | このコンポーネントを持つオブジェクトのみを含めます |
limit | int | いいえ | 50 | 結果の最大数 |
戻り値: { success, count, center, radius, results }
smart_align_to_ground
選択したオブジェクトに下向きのレイキャストを行い、地面に合わせます。あらかじめ Hierarchy でオブジェクトを選択しておく必要があります。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
maxDistance | float | いいえ | 100 | レイキャストの最大距離 |
alignRotation | bool | いいえ | false | 回転を表面の法線に合わせます |
戻り値: { success, aligned, total }
smart_distribute
選択したオブジェクトを、最初と最後の位置の間に均等に配置します。あらかじめ Hierarchy で 3 つ以上のオブジェクトを選択しておく必要があります。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
axis | string | いいえ | "X" | X、Y、Z、-X、-Y、-Z |
戻り値: { success, distributed, axis }
smart_snap_to_grid
選択したオブジェクトをグリッドにスナップします。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
gridSize | float | いいえ | 1 | グリッドのセルサイズ |
戻り値: { success, snapped, gridSize }
smart_randomize_transform
選択したオブジェクトの位置/回転/スケールを、指定した範囲内でランダム化します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
posRange | float | いいえ | 0 | 位置のランダム化範囲 |
rotRange | float | いいえ | 0 | 回転のランダム化範囲(度) |
scaleMin | float | いいえ | 1 | 均一スケールの最小値 |
scaleMax | float | いいえ | 1 | 均一スケールの最大値 |
戻り値: { success, randomized }
smart_replace_objects
選択したオブジェクトをプレハブに置き換えます(トランスフォームは維持されます)。あらかじめ Hierarchy でオブジェクトを選択しておく必要があります。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
prefabPath | string | はい | - | 置換先プレハブのアセットパス |
戻り値: { success, replaced, prefab }
smart_select_by_component
特定のコンポーネントを持つオブジェクトをすべて選択します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
componentName | string | いいえ | - | 検索するコンポーネント型の名前(componentName が省略された場合に使用されるエイリアスは componentType です) |
戻り値: { success, selected, component }
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。