mcpField
U
unity-ui

unity-ui

github.com/besty0728デザイン・UI1.9k101 回インストール今日更新
リポジトリ

unity-ui について

unity-uiは、UnityのUGUIとCanvasインターフェースを構築するためのスキルモジュールです。一般的なUI要素の作成、RectTransformプロパティの編集、アンカーやレイアウトグループによる配置を行えます。

主な機能

  1. 01Canvasと一般的なUI要素の作成
  2. 02複数UI要素の一括作成
  3. 03RectTransformプロパティの編集
  4. 04アンカーとレイアウトグループの設定
  5. 05シーン内UI要素の確認

活用シーン

  1. 01メニューやHUDの構築
  2. 02繰り返し使うUI要素群の作成
  3. 03UIサイズとアンカーの調整
  4. 04子要素をグリッドや行に配置

MCP 対応

入力にはUnity skillsシステムで使うスキルが記載されていますが、MCPインターフェースについては説明されていません。

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/unity-uiを入力して読み込まれたか確認します。

同梱ファイルUI_REFERENCE.md

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターを指定してスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からすでにパラメーター定義を取得している場合は、そのまま dryRun に進めます。

トリガー

  • UGUI 画面の構築
  • Canvas 要素の追加
  • UI レイアウトの配置
  • UGUI 界面の構築、Canvas 要素の追加、UI レイアウトの配置

Unity UI スキル

Unity UGUI / Canvas のワークフローには、このモジュールを使用します。UI Toolkit とは別のモジュールです。

バッチ優先:UI 要素を 2+ 個作成する場合は、ui_create_batch を優先してください。

動作モード

  • Approval:照会系の skill(ソースで SkillMode.SemiAuto と記載されている ui_find_all)はそのまま実行します。それ以外の作成/変更系(ui_create_* / ui_set_* / ui_add_* / ui_layout_children / ui_align_selected など、SkillMode.FullAuto と記載されているもの)はユーザーの許可が必要です。許可後、サーバーが一度の処理で実行し、結果を返します。
  • Auto / Bypass:すべての skill をそのまま実行します。Auto は AI による自己評価を行い、Bypass はすべて許可します。
  • このモジュールには、Delete / PlayMode / Reload / 高リスクの skill は含まれません。Bypass 専用のブロック対象もありません。UI ノードの削除には gameobject モジュールを使用してください。

禁止事項(よくある誤認):

  • ui_add_canvas は存在しません。ui_create_canvas を使用してください。
  • ui_create_label は存在しません。ui_create_text を使用してください。
  • ui_create_checkbox は存在しません。ui_create_toggle を使用してください。
  • ui_set_color は存在しません。Image / Text に対して component_set_property を使用するか、利用可能な場合は専用の UI プロパティスキルを使用してください。
  • UGUI(ui)と UI Toolkit(uitoolkit)を混同しないでください。

振り分け:

  • UXML/USS/UIDocument には uitoolkit を使用してください。
  • XR 対応のワールドスペース Canvas への変換には xr_setup_ui_canvas を使用してください。
  • 作成後のテキスト更新には ui_set_text を使用してください。
  • レイアウトと整列には ui_layout_children、ui_align_selected、ui_distribute_selected を使用してください。

スキル

作成スキル
Skill用途主なパラメーター
ui_create_canvasCanvas を作成name?、renderMode?
ui_create_panelパネルコンテナーを作成name?、parent?、r/g/b/a?
ui_create_buttonボタンを作成name?、parent?、text?、width/height?
ui_create_textテキストラベルを作成name?、parent?、text?、fontSize?、r/g/b?
ui_create_image画像を作成name?、parent?、spritePath?、width/height?
ui_create_inputfield入力フィールドを作成name?、parent?、placeholder?、width/height?
ui_create_sliderスライダーを作成name?、parent?、minValue?、maxValue?、value?
ui_create_toggleトグルを作成name?、parent?、label?、isOn?
ui_create_dropdownドロップダウンを作成name?、parent?、options?、width/height?
ui_create_scrollviewScrollRect 階層を作成name?、parent?、width/height?、horizontal?、vertical?
ui_create_rawimageRawImage を作成name?、parent?、texturePath?、width/height?
ui_create_scrollbarスクロールバーを作成name?、parent?、direction?、value?、size?
ui_create_batch複数の UI 要素を作成items(JSON 文字列配列)
照会・レイアウトスキル
Skill用途主なパラメーター
ui_find_allシーン内の UI 要素を検索uiType?、limit?
ui_set_textテキスト内容を更新name、text
ui_set_rectRectTransform のサイズ/オフセットを設定対象、width、height、posX、posY、left/right/top/bottom?
ui_get_rect_transformRectTransform の全データを読み取る対象
ui_set_rect_transformRectTransform の全データを設定アンカー、ピボット、オフセット、ローカルトランスフォーム、width/height
ui_set_rect_transform_batch複数の要素の RectTransform 全データを設定items
ui_set_anchorアンカープリセットを適用対象、preset?、setPivot?
ui_layout_children垂直/水平/グリッドレイアウト対象、layoutType?、spacing?
ui_align_selected現在の選択項目を整列alignment?
ui_distribute_selected現在の選択項目を均等配置direction?
プロパティとエフェクトのスキル
スキル用途主なパラメーター
ui_set_image画像タイプ/塗りつぶし/スプライトtarget、type?、fillMethod?、fillAmount?、spritePath?
ui_add_layout_elementLayoutElement の制約を追加target、幅/高さの優先値、柔軟値
ui_add_canvas_groupCanvasGroup を追加target、alpha?、interactable?、blocksRaycasts?
ui_add_maskMask または RectMask2D を追加target、maskType?、showMaskGraphic?
ui_add_outlineShadow/Outline エフェクトを追加target、effectType?、r/g/b/a?、distanceX/Y?
ui_configure_selectableトランジション/ナビゲーション/色を設定target、transition?、navigationMode?、色の値

使用頻度の高いデフォルト

Canvas と親子関係
  • ui_create_canvas のデフォルトは ScreenSpaceOverlay です。
  • ほとんどの作成スキルでは parent を指定できます。省略した場合、実装の状況に応じて、Unity はアクティブな Canvas またはシーンのルートの下に作成します。
  • 再利用可能なメニューグループを作成する場合は、Canvas を一度作成してから Panel を作成し、すべての子コントロールをそのパネルの下に配置します。
よく使われる作成パラメーター
スキル使用頻度の高いフィールド
ui_create_buttontext、width、height
ui_create_texttext、fontSize、r/g/b
ui_create_imagespritePath、width、height
ui_create_sliderminValue、maxValue、value
ui_create_togglelabel、isOn
ui_create_dropdownoptions
ui_create_scrollviewhorizontal、vertical、movementType

重要:

  • ほとんどの作成スキルでは、明示的な x/y の配置は指定できません。
  • まず作成し、その後 ui_set_rect、ui_set_anchor、または ui_layout_children で配置/アンカーを設定します。
RectTransform の詳細編集

プリセットではなく Inspector レベルで RectTransform を設定する必要がある場合は、ui_set_rect_transform を使用します。

スキルパラメーター
ui_get_rect_transformname、instanceId、path
ui_set_rect_transformtarget と anchorMinX/Y、anchorMaxX/Y、pivotX/Y、anchoredPosX/Y/Z、sizeDeltaX/Y、offsetMinX/Y、offsetMaxX/Y、localPosX/Y/Z、localRotX/Y/Z、localScaleX/Y/Z、width、height
ui_set_rect_transform_batch同じターゲットごとのフィールドを含む items JSON 配列
ui_get_rect_transform

UI 要素の RectTransform データをすべて取得します。

パラメーター型必須デフォルト説明
namestringNo*nullGameObject 名
instanceIdintNo*0GameObject インスタンス ID
pathstringNo*nullヒエラルキーのパス

戻り値: { success, name, instanceId, path, anchorMin, anchorMax, pivot, anchoredPosition3D, sizeDelta, offsetMin, offsetMax, localPosition, localEulerAngles, localScale, rect }

ui_set_rect_transform

UI 要素の RectTransform データ全体を設定します。

ParameterTypeRequiredDefaultDescription
namestringNo*nullGameObject 名
instanceIdintNo*0GameObject のインスタンス ID
pathstringNo*nullヒエラルキーのパス
anchorMinX / anchorMinYfloatNonullアンカーの最小値
anchorMaxX / anchorMaxYfloatNonullアンカーの最大値
pivotX / pivotYfloatNonullピボット
anchoredPosX / anchoredPosY / anchoredPosZfloatNonullアンカー基準の 3D 位置
sizeDeltaX / sizeDeltaYfloatNonullサイズの差分
offsetMinX / offsetMinYfloatNonullオフセットの最小値
offsetMaxX / offsetMaxYfloatNonullオフセットの最大値
localPosX / localPosY / localPosZfloatNonullローカル位置
localRotX / localRotY / localRotZfloatNonullローカルのオイラー角による回転
localScaleX / localScaleY / localScaleZfloatNonullローカルスケール
width / heightfloatNonull現在のアンカーを基準にしたサイズ

戻り値: ui_get_rect_transform と同じ形式です。

ui_set_rect_transform_batch

複数の UI 要素の RectTransform データ全体を設定します。

ParameterTypeRequiredDefaultDescription
itemsjson stringYes-各項目の対象と RectTransform フィールドを含む JSON 配列

戻り値: { success, totalItems, successCount, failCount, results }

レイアウトとアンカーのルール
  • コントロールを標準的なレイアウト位置に移動するには、ui_set_anchor が最も手早い方法です。
  • アンカー設定後にサイズやオフセットを正確に調整するには、ui_set_rect が適しています。
  • 縦、横、またはグリッド形式のメニューを作成する場合、子要素を一つずつ手動で配置するより、ui_layout_children を使用してください。

本番環境でよく使用されるアンカープリセット:

  • モーダル/メニューパネルには MiddleCenter
  • HUD の隅には TopLeft または TopRight
  • 全画面の背景には StretchAll
TextMeshPro に関する注意

テキスト作成時には TMP が自動検出されます:

  • TMP が利用可能 -> TextMeshProUGUI
  • TMP が利用できない -> レガシーの Text

後続のコンポーネント固有の編集で必要な場合は、作成されたコンポーネントを把握するためにレスポンスのペイロードを確認してください。

ワークフローに関する注意

  1. まず Canvas を作成します。
  2. 関連するコントロールをパネルでグループ化します。
  3. メニュー、HUD グループ、繰り返し使用するウィジェットには、ui_create_batch を優先してください。
  4. 子要素を一つずつ手動で配置する前に、アンカーとレイアウトグループを使用します。
  5. テキスト作成時には TextMeshPro が自動検出されます。レスポンスには TMP が使用されたかどうかが示されます。
  6. ワールド空間のゲームプレイ UI では、まずここで Canvas を作成し、必要な場合にのみ XR 用に変換します。
  7. ui_create_batch は主に一括作成用であり、正確な位置調整には適していません。作成後にレイアウトまたは矩形/アンカーを調整してください。
  8. 現在の REST/API レイヤーでは、ui_create_batch.items は JSON 文字列のパラメーターであり、生の配列オブジェクトではありません。

最小限の例

import unity_skills
import json

unity_skills.call_skill("ui_create_canvas", name="MainMenu")
unity_skills.call_skill("ui_create_panel", name="MenuPanel", parent="MainMenu", a=0.7)
unity_skills.call_skill("ui_set_rect", name="MenuPanel", width=320, height=240)
unity_skills.call_skill("ui_create_batch", items=json.dumps([
    {"type": "Button", "name": "StartBtn", "parent": "MenuPanel", "text": "Start", "width": 220, "height": 44},
    {"type": "Button", "name": "OptionsBtn", "parent": "MenuPanel", "text": "Options", "width": 220, "height": 44},
    {"type": "Button", "name": "QuitBtn", "parent": "MenuPanel", "text": "Quit", "width": 220, "height": 44}
]))

unity_skills.call_skill("ui_set_anchor", name="MenuPanel", preset="MiddleCenter")
unity_skills.call_skill("ui_layout_children", name="MenuPanel", layoutType="Vertical", spacing=12)

正確なシグネチャ

正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。 要素の作成に関する詳細、プロパティの表、より大規模な UGUI の例については、UI_REFERENCE.md を読み込んでください。

よくあるエラー

トランスポートレベルのすべてのコード(COMPILING/RATE_LIMIT など)→ ../../references/protocol-error-codes.md

エラー発生条件修正方法
TARGET_NOT_FOUND親の GameObject、UI 要素、RectTransform、Text/Image/Selectable コンポーネント、またはスプライトアセットが見つかりませんでした。ui_find_all、gameobject_find、または scene_get_hierarchy を使用して要素を探し、asset_find でスプライトのパスを確認してください。
SEMANTIC_INVALID不明なアンカープリセット、レイアウトタイプ、配置、または区切り文字を含む名前/パスなど、無効な値が指定されました。エラーの内容から有効なプリセット/タイプ(例:MiddleCenter、Vertical、TopLeft)を選択して、再試行してください。
SKILL_ERROR必要な数に満たない UI 要素しか選択されておらず、選択ベースの操作に失敗しました(例:Select at least 2 UI elements)。配置/分布スキルを呼び出す前に、Hierarchy で必要な UI 要素を選択してください。

コメント