AgentSkillsCN

unity-ui

创建UI元素(画布、按钮、文本等)。对于2个及以上元素,可使用ui_create_batch。

SKILL.md
--- frontmatter
name: unity-ui
description: "Create UI elements (Canvas, Button, Text, etc.). Use ui_create_batch for 2+ elements."

Unity UI Skills

BATCH-FIRST: Use ui_create_batch when creating 2+ UI elements.

Skills Overview

Single ObjectBatch VersionUse Batch When
ui_create_*ui_create_batchCreating 2+ UI elements

Query/Utility Skills:

  • ui_set_text - Update text content
  • ui_find_all - Find UI elements

Single-Object Skills

ui_create_canvas

Create a UI Canvas container.

ParameterTypeRequiredDefaultDescription
namestringNo"Canvas"Canvas name
renderModestringNo"ScreenSpaceOverlay"ScreenSpaceOverlay/ScreenSpaceCamera/WorldSpace

ui_create_panel

Create a Panel container.

ParameterTypeRequiredDefaultDescription
namestringNo"Panel"Panel name
parentstringNonullParent Canvas/object
r/g/b/afloatNo1,1,1,0.5Background color
width/heightfloatNo200Size in pixels

ui_create_button

Create a Button.

ParameterTypeRequiredDefaultDescription
namestringNo"Button"Button name
parentstringNonullParent object
textstringNo"Button"Button label
width/heightfloatNo160/30Size
x/yfloatNo0Position offset

ui_create_text

Create a Text element.

ParameterTypeRequiredDefaultDescription
namestringNo"Text"Text name
parentstringNonullParent object
textstringNo"Text"Content
fontSizeintNo24Font size
r/g/b/afloatNo0,0,0,1Text color
width/heightfloatNo200/50Size

ui_create_image

Create an Image element.

ParameterTypeRequiredDefaultDescription
namestringNo"Image"Image name
parentstringNonullParent object
spritePathstringNonullSprite asset path
r/g/b/afloatNo1,1,1,1Tint color
width/heightfloatNo100Size

ui_create_inputfield

Create an InputField.

ParameterTypeRequiredDefaultDescription
namestringNo"InputField"Field name
parentstringNonullParent object
placeholderstringNo"Enter text..."Placeholder
width/heightfloatNo200/30Size

ui_create_slider

Create a Slider.

ParameterTypeRequiredDefaultDescription
namestringNo"Slider"Slider name
parentstringNonullParent object
minValuefloatNo0Minimum value
maxValuefloatNo1Maximum value
valuefloatNo0.5Initial value
width/heightfloatNo160/20Size

ui_create_toggle

Create a Toggle/Checkbox.

ParameterTypeRequiredDefaultDescription
namestringNo"Toggle"Toggle name
parentstringNonullParent object
labelstringNo"Toggle"Label text
isOnboolNofalseInitial state

ui_set_text

Update text content.

ParameterTypeRequiredDescription
namestringYesText object name
textstringYesNew content

ui_find_all

Find UI elements in scene.

ParameterTypeRequiredDefaultDescription
uiTypestringNonullFilter: Button/Text/Image/etc.
limitintNo100Max results

Batch Skill

ui_create_batch

Create multiple UI elements in one call.

ParameterTypeRequiredDescription
itemsarrayYesArray of UI element configs

Item properties: type (required), name, parent, text, width, height, x, y, r, g, b, a, etc.

Supported types: Button, Text, Image, Panel, Slider, Toggle, InputField

python
unity_skills.call_skill("ui_create_batch", items=[
    {"type": "Button", "name": "StartBtn", "parent": "MenuPanel", "text": "Start", "y": 60},
    {"type": "Button", "name": "OptionsBtn", "parent": "MenuPanel", "text": "Options", "y": 0},
    {"type": "Button", "name": "QuitBtn", "parent": "MenuPanel", "text": "Quit", "y": -60}
])

Example: Efficient Menu Creation

python
import unity_skills

# BAD: 5 API calls
unity_skills.call_skill("ui_create_canvas", name="MainMenu")
unity_skills.call_skill("ui_create_panel", name="MenuPanel", parent="MainMenu")
unity_skills.call_skill("ui_create_button", name="StartBtn", parent="MenuPanel", text="Start", y=60)
unity_skills.call_skill("ui_create_button", name="OptionsBtn", parent="MenuPanel", text="Options", y=0)
unity_skills.call_skill("ui_create_button", name="QuitBtn", parent="MenuPanel", text="Quit", y=-60)

# GOOD: 2 API calls
unity_skills.call_skill("ui_create_canvas", name="MainMenu")
unity_skills.call_skill("ui_create_batch", items=[
    {"type": "Panel", "name": "MenuPanel", "parent": "MainMenu", "width": 300, "height": 200},
    {"type": "Button", "name": "StartBtn", "parent": "MenuPanel", "text": "Start", "y": 60},
    {"type": "Button", "name": "OptionsBtn", "parent": "MenuPanel", "text": "Options", "y": 0},
    {"type": "Button", "name": "QuitBtn", "parent": "MenuPanel", "text": "Quit", "y": -60}
])

TextMeshPro Support

UI Skills auto-detect TextMeshPro:

  • With TMP: Uses TextMeshProUGUI
  • Without TMP: Falls back to legacy UnityEngine.UI.Text

Response includes usingTMP field to indicate which was used.

Best Practices

  1. Always create Canvas first
  2. Use Panels to organize related elements
  3. Use meaningful names for scripting access
  4. Set parent for proper hierarchy
  5. WorldSpace canvas for 3D UI (health bars, etc.)