بنقرة واحدة
unity-ui
Use when users want to create Canvas, Button, Text, Image, or other UI elements.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Use when users want to create Canvas, Button, Text, Image, or other UI elements.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use when working with a Unity project via MCP — creating or editing scenes, GameObjects, components, prefabs, materials, UI, lighting, navmesh, animations, terrain, C# scripts, or any other Unity Editor task.
Use when users want to run Unity tests or read test results.
Use when users want to enter play mode, select objects, undo/redo, or execute menu commands.
Use when creating, reading, editing, searching, validating, or deleting C# scripts in a Unity project.
Use when about to write or install a custom Editor script, add a [MenuItem], build a custom Editor window, or create a one-off Editor helper — to check whether a ready-to-paste template already exists in tooling/<domain>/ before reaching for Unity_CreateScript.
Use when users want to find unused assets, duplicate files, or clean up the project.
| name | unity-ui |
| description | Use when users want to create Canvas, Button, Text, Image, or other UI elements. |
Use this module for Unity UGUI / Canvas workflows. It is separate from UI Toolkit.
Routing:
../../mcp-tools.md first for a dedicated official Unity MCP tool.../../recipes/ui/<command>.md.uitoolkit.xr_setup_ui_canvas.ui_set_text.ui_layout_children, ui_align_selected, ui_distribute_selected.Creating 2+ elements: call the individual
ui_create_<primitive>recipes in a singleUnity_RunCommand— oneCommandScript.Executeblock can instantiate any number of UI elements by chaining the per-primitive setup inline.
DO NOT (common hallucinations):
ui_add_canvas does not exist -> use ui_create_canvasui_create_label does not exist -> use ui_create_textui_create_checkbox does not exist -> use ui_create_toggleui_set_color does not exist -> use component_set_property on Image/Text, or the dedicated UI property skills when availableui) with UI Toolkit (uitoolkit)| Skill | Use | Key parameters |
|---|---|---|
ui_create_canvas | Create Canvas | name?, renderMode? |
ui_create_panel | Create panel container | name?, parent?, r/g/b/a? |
ui_create_button | Create button | name?, parent?, text?, width/height? |
ui_create_text | Create text label | name?, parent?, text?, fontSize?, r/g/b? |
ui_create_image | Create image | name?, parent?, spritePath?, width/height? |
ui_create_inputfield | Create input field | name?, parent?, placeholder?, width/height? |
ui_create_slider | Create slider | name?, parent?, minValue?, maxValue?, value? |
ui_create_toggle | Create toggle | name?, parent?, label?, isOn? |
ui_create_dropdown | Create dropdown | name?, parent?, options?, width/height? |
ui_create_scrollview | Create ScrollRect hierarchy | name?, parent?, width/height?, horizontal?, vertical? |
ui_create_rawimage | Create RawImage | name?, parent?, texturePath?, width/height? |
ui_create_scrollbar | Create scrollbar | name?, parent?, direction?, value?, size? |
| Skill | Use | Key parameters |
|---|---|---|
ui_find_all | Find scene UI elements | uiType?, limit? |
ui_set_text | Update text content | name, text |
ui_set_rect | Set RectTransform size/offsets | target, width, height, posX, posY, left/right/top/bottom? |
ui_set_anchor | Apply anchor preset | target, preset?, setPivot? |
ui_layout_children | Vertical/Horizontal/Grid layout | target, layoutType?, spacing? |
ui_align_selected | Align current selection | alignment? |
ui_distribute_selected | Distribute current selection | direction? |
| Skill | Use | Key parameters |
|---|---|---|
ui_set_image | Image type/fill/sprite | target, type? (Simple/Sliced/Tiled/Filled), fillMethod?, fillAmount?, spritePath?, preserveAspect? |
ui_add_layout_element | Add LayoutElement constraints | target, minWidth/Height?, preferredWidth/Height?, flexibleWidth/Height?, ignoreLayout?, layoutPriority? |
ui_add_canvas_group | Add CanvasGroup | target, alpha?, interactable?, blocksRaycasts?, ignoreParentGroups? |
ui_add_mask | Add Mask or RectMask2D | target, maskType?, showMaskGraphic? |
ui_add_outline | Add Shadow/Outline effect | target, effectType? (Shadow/Outline), r/g/b/a?, distanceX/Y?, useGraphicAlpha? |
ui_configure_selectable | Configure transitions/navigation/colors | target, transition?, navigationMode?, interactable?, normalR/G/B?, highlightedR/G/B?, pressedR/G/B?, disabledR/G/B?, colorMultiplier?, fadeDuration? |
ui_create_canvas defaults to ScreenSpaceOverlay.parent; if omitted, Unity will create under the active Canvas or scene root depending on the implementation context.| Skill | High-frequency fields |
|---|---|
ui_create_button | text, width, height |
ui_create_text | text, fontSize, r/g/b |
ui_create_image | spritePath, width, height |
ui_create_slider | minValue, maxValue, value |
ui_create_toggle | label, isOn |
ui_create_dropdown | options |
ui_create_scrollview | horizontal, vertical, movementType |
Important:
x/y placement.ui_set_rect, ui_set_anchor, or ui_layout_children.ui_set_anchor is the fastest way to move a control into a standard layout position.ui_set_rect is better for precise size/offset edits after anchoring.ui_layout_children is preferred over hand-positioning every child when building vertical, horizontal, or grid menus.Anchor presets commonly used in production:
MiddleCenter for modal/menu panelsTopLeft or TopRight for HUD cornersStretchAll for full-screen backgroundsText creation auto-detects TMP:
TextMeshProUGUITextRead the response payload if you need to know which one was created before later component-specific edits.
ui_create_batch for menus, HUD groups, and repeated widgets.ui_create_batch is mainly for bulk creation, not precise positioning. Follow it with layout or rect/anchor adjustments.ui_create_batch.items is a JSON string parameter, not a raw array object.ui_create_canvas name="MainMenu" renderMode="ScreenSpaceOverlay"
ui_create_panel name="MenuPanel" parent="MainMenu" a=0.65
ui_set_rect name="MenuPanel" width=300 height=200
ui_create_batch items=[
{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}
]
ui_layout_children name="MenuPanel" layoutType="Vertical" spacing=12
Recipe path rule: ../../recipes/ui/<command>.md
See ../../recipes/ui/<command>.md for C# templates.
Standard 3-phase loop for running an editor authoring menu, capturing a screenshot, and verifying the result. Use whenever a [MenuItem] script modifies scene objects and requires visual confirmation.
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
result.Log("compiling=" + UnityEditor.EditorApplication.isCompiling);
}
}
Poll until compiling=False. If True, wait 2–3 seconds and re-run.
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
bool ok = UnityEditor.EditorApplication.ExecuteMenuItem("Tools/Authoring/YourMenuName");
result.Log("menu ok=" + ok);
}
}
Expected: menu ok=True plus any [Log] lines from the menu itself. If ok=False the menu path is wrong or the [MenuItem] attribute string does not match.
Prerequisite:
Tools/UI/Screenshot/menu items must exist in the project. If they do not, install the screenshot Editor script first — seetooling/ui/ui_screenshot_tool.md. Create the script viaUnity_CreateScript, wait for Unity to recompile, then continue.
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
bool ok = UnityEditor.EditorApplication.ExecuteMenuItem("Tools/UI/Screenshot/ScreenName");
result.Log("screenshot ok=" + ok);
}
}
After this call, use the Read tool on the output PNG to confirm the visual result.
When verifying screenshots, open the relevant design spec file (e.g. a .jsx or .css reference) and compare values directly. Do NOT derive the checklist from the screenshot — that produces a circular pass. Example:
Spec says xpBar.height: 54. Current screenshot bar height looks ~20px. → FAIL.
Self-derived checklists ("button is not white") only catch regressions, not spec divergence.
Web spec px values do not map directly to Unity canvas pixels. Use these baselines instead of copying px numbers from a web design file.
| Role | Minimum height |
|---|---|
| Primary action button (PLAY, CONFIRM) | 60 px |
| Secondary button (SETTINGS, CANCEL) | 48 px |
| Icon button (pause, close) | 44 × 44 px |
| Toggle, checkbox | 28 × 28 px background |
Width as percentage of canvas width; height as design-unit minimums. These values assume a portrait mobile canvas — scale proportionally for landscape or tablet.
| Bar | Width | Height |
|---|---|---|
| XP / level bar | 80–85% canvas width | 48–56 px |
| HP bar | 65–70% canvas width | 24–32 px |
| Thin progress strip | 100% width | 8–12 px |
Text inside a bar (e.g. "LVL 3") needs at minimum the bar's own height to be legible — a 24 px bar cannot hold 22 px text with padding.
Minimum bar height when text is inside: 44 px. If a design spec shows a smaller value, the spec is wrong for mobile — do not copy it.
| Role | Font size range |
|---|---|
| Screen title (GAME OVER, PAUSED) | 34–44 px |
| Card / panel title | 18–26 px |
| Body / stat label | 13–16 px |
| Stat value (large accent) | 18–24 px |
| Badge / caption | 10–13 px |
enableAutoSizing as a crutch for wrong sizes. Auto-sizing down to the minimum means the size is wrong, not that auto-sizing fixed it.enableAutoSizing = true BEFORE fontSizeMin / fontSizeMax. TMP silently ignores the size range if auto-sizing is enabled after the size fields are written.Screen.safeArea to inset any HUD elements that anchor to the screen edges.