Skip to content
unity-ui logo

unity-ui

Unity UGUI (Canvas-based) creation and layout — Canvas/Panel/Button/Text(TMP)/Image/InputField/Slider/Toggle/Dropdown/ScrollView, RectTransform anchors, layout groups. For UXML/USS use uitoolkit. Exact signatures via GET /skills/schema.

SKILL.md

Full skill instructions

Unity UI Skills

Use this module for Unity UGUI / Canvas workflows. It is separate from UI Toolkit.

Batch-first: Prefer ui_create_batch when creating 2+ UI elements.

Operating Mode

  • Approval:查询类 skill(ui_find_all,源码标 SkillMode.SemiAuto)直接执行;其余创建/修改类(ui_create_* / ui_set_* / ui_add_* / ui_layout_children / ui_align_selected 等,标 SkillMode.FullAuto)需用户 grant,grant 后服务端一步执行返结果。
  • Auto / Bypass:所有 skill 直接执行;Auto 走 AI 自我评估,Bypass 全放行。
  • 本模块不含 Delete / PlayMode / Reload / 高危 skill,无 Bypass-only 拦截项。删除 UI 节点请走 gameobject 模块。

DO NOT (common hallucinations):

  • ui_add_canvas does not exist -> use ui_create_canvas
  • ui_create_label does not exist -> use ui_create_text
  • ui_create_checkbox does not exist -> use ui_create_toggle
  • ui_set_color does not exist -> use component_set_property on Image/Text, or the dedicated UI property skills when available
  • Do not confuse UGUI (ui) with UI Toolkit (uitoolkit)

Routing:

  • For UXML/​USS/​UIDocument -> use uitoolkit
  • For XR-compatible world-space Canvas conversion -> use xr_setup_ui_canvas
  • For text updates after creation -> use ui_set_text
  • For layout and alignment -> use ui_layout_children, ui_align_selected, ui_distribute_selected

Skills

Create Skills

SkillUseKey parameters
ui_create_canvasCreate Canvasname?, renderMode?
ui_create_panelCreate panel containername?, parent?, r/​g/​b/​a?
ui_create_buttonCreate buttonname?, parent?, text?, width/​height?
ui_create_textCreate text labelname?, parent?, text?, fontSize?, r/​g/​b?
ui_create_imageCreate imagename?, parent?, spritePath?, width/​height?
ui_create_inputfieldCreate input fieldname?, parent?, placeholder?, width/​height?
ui_create_sliderCreate slidername?, parent?, minValue?, maxValue?, value?
ui_create_toggleCreate togglename?, parent?, label?, isOn?
ui_create_dropdownCreate dropdownname?, parent?, options?, width/​height?
ui_create_scrollviewCreate ScrollRect hierarchyname?, parent?, width/​height?, horizontal?, vertical?
ui_create_rawimageCreate RawImagename?, parent?, texturePath?, width/​height?
ui_create_scrollbarCreate scrollbarname?, parent?, direction?, value?, size?
ui_create_batchCreate multiple UI elementsitems (JSON string array)

Query and Layout Skills

SkillUseKey parameters
ui_find_allFind scene UI elementsuiType?, limit?
ui_set_textUpdate text contentname, text
ui_set_rectSet RectTransform size/​offsetstarget, width, height, posX, posY, left/​right/​top/​bottom?
ui_get_rect_transformRead full RectTransform datatarget
ui_set_rect_transformSet full RectTransform dataanchors, pivot, offsets, local transform, width/​height
ui_set_rect_transform_batchSet full RectTransform data for multiple elementsitems
ui_set_anchorApply anchor presettarget, preset?, setPivot?
ui_layout_childrenVertical/​Horizontal/​Grid layouttarget, layoutType?, spacing?
ui_align_selectedAlign current selectionalignment?
ui_distribute_selectedDistribute current selectiondirection?

Property and Effect Skills

SkillUseKey parameters
ui_set_imageImage type/​fill/​spritetarget, type?, fillMethod?, fillAmount?, spritePath?
ui_add_layout_elementAdd LayoutElement constraintstarget, width/​height prefs, flex values
ui_add_canvas_groupAdd CanvasGrouptarget, alpha?, interactable?, blocksRaycasts?
ui_add_maskAdd Mask or RectMask2Dtarget, maskType?, showMaskGraphic?
ui_add_outlineAdd Shadow/​Outline effecttarget, effectType?, r/​g/​b/​a?, distanceX/​Y?
ui_configure_selectableConfigure transitions/​navigation/​colorstarget, transition?, navigationMode?, color values

High-Frequency Defaults

Canvas and Parenting

  • ui_create_canvas defaults to ScreenSpaceOverlay.
  • Most create skills accept parent; if omitted, Unity will create under the active Canvas or scene root depending on the implementation context.
  • For reusable menu groups, create the Canvas once, then create a Panel and put all child controls under that panel.

Common Create Parameters

SkillHigh-frequency fields
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

Important:

  • Most create skills do not take explicit x/​y placement.
  • Create first, then place/​anchor with ui_set_rect, ui_set_anchor, or ui_layout_children.

Full RectTransform Editing

Use ui_set_rect_transform when you need Inspector-level RectTransform coverage instead of a preset.

SkillParameters
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_batchitems JSON array with the same per-target fields

ui_get_rect_transform

Get full RectTransform data for a UI element.

ParameterTypeRequiredDefaultDescription
namestringNo*nullGameObject name
instanceIdintNo*0GameObject instance ID
pathstringNo*nullHierarchy path

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

ui_set_rect_transform

Set full RectTransform data for a UI element.

ParameterTypeRequiredDefaultDescription
namestringNo*nullGameObject name
instanceIdintNo*0GameObject instance ID
pathstringNo*nullHierarchy path
anchorMinX / anchorMinYfloatNonullAnchor min
anchorMaxX / anchorMaxYfloatNonullAnchor max
pivotX / pivotYfloatNonullPivot
anchoredPosX / anchoredPosY / anchoredPosZfloatNonullAnchored position 3D
sizeDeltaX / sizeDeltaYfloatNonullSize delta
offsetMinX / offsetMinYfloatNonullOffset min
offsetMaxX / offsetMaxYfloatNonullOffset max
localPosX / localPosY / localPosZfloatNonullLocal position
localRotX / localRotY / localRotZfloatNonullLocal euler rotation
localScaleX / localScaleY / localScaleZfloatNonullLocal scale
width / heightfloatNonullSize with current anchors

Returns: same shape as ui_get_rect_transform.

ui_set_rect_transform_batch

Set full RectTransform data for multiple UI elements.

ParameterTypeRequiredDefaultDescription
itemsjson stringYes-JSON array of per-item target and RectTransform fields

Returns: { success, totalItems, successCount, failCount, results }

Layout and Anchoring Rules

  • 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 panels
  • TopLeft or TopRight for HUD corners
  • StretchAll for full-screen backgrounds

TextMeshPro Note

Text creation auto-detects TMP:

  • TMP available -> TextMeshProUGUI
  • TMP unavailable -> legacy Text

Read the response payload if you need to know which one was created before later component-specific edits.

Workflow Notes

  1. Create a Canvas first.
  2. Use panels to group related controls.
  3. Prefer ui_create_batch for menus, HUD groups, and repeated widgets.
  4. Use anchors and layout groups before hand-placing every child.
  5. Text creation auto-detects TextMeshPro. Responses indicate whether TMP was used.
  6. For world-space gameplay UI, build the Canvas here first, then convert for XR only if needed.
  7. ui_create_batch is mainly for bulk creation, not precise positioning. Follow it with layout or rect/​anchor adjustments.
  8. ui_create_batch.items is a JSON string parameter in the current REST/​API layer, not a raw array object.

Minimal Example

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)

Exact Signatures

Exact names, parameters, defaults, and returns are defined by GET /​skills/​schema or unity_skills.get_skill_schema(), not by this file. Load UI_REFERENCE.md for extended element creation details, property tables, and larger UGUI examples.