Skip to content
Back to skills

Ui

ASecurity

Create and lay out Unity UGUI screens

  • 1,812 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
developmentpythonapi

Works with

  • api

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add Besty0728/Unity-Skills --skill ui --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ui?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ui
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/besty0728-ui/badge)](https://www.skillsdirectory.com/skills/besty0728-ui)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: unity-ui
description: Create and lay out Unity UGUI screens
---

> **Before calling any skill in this module:** if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via `GET /skills/recommend?includeSchema=true`) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.

## Triggers
- Building UGUI screens
- Adding Canvas elements
- Arranging UI layout
- 搭建 UGUI 界面、添加 Canvas 元素、排布 UI 布局

# 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

| 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?` |
| `ui_create_batch` | Create multiple UI elements | `items` (`JSON` string array) |

### Query and Layout Skills

| 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_get_rect_transform` | Read full RectTransform data | target |
| `ui_set_rect_transform` | Set full RectTransform data | anchors, pivot, offsets, local transform, width/height |
| `ui_set_rect_transform_batch` | Set full RectTransform data for multiple elements | `items` |
| `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?` |

### Property and Effect Skills

| Skill | Use | Key parameters |
|-------|-----|----------------|
| `ui_set_image` | Image type/fill/sprite | target, `type?`, `fillMethod?`, `fillAmount?`, `spritePath?` |
| `ui_add_layout_element` | Add LayoutElement constraints | target, width/height prefs, flex values |
| `ui_add_canvas_group` | Add CanvasGroup | target, `alpha?`, `interactable?`, `blocksRaycasts?` |
| `ui_add_mask` | Add `Mask` or `RectMask2D` | target, `maskType?`, `showMaskGraphic?` |
| `ui_add_outline` | Add Shadow/Outline effect | target, `effectType?`, `r/g/b/a?`, `distanceX/Y?` |
| `ui_configure_selectable` | Configure transitions/navigation/colors | target, `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

| 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:
- 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.

| Skill | Parameters |
|-------|------------|
| `ui_get_rect_transform` | `name`, `instanceId`, `path` |
| `ui_set_rect_transform` | target + `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 array with the same per-target fields |

### ui_get_rect_transform
Get full RectTransform data for a UI element.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `name` | string | No* | null | GameObject name |
| `instanceId` | int | No* | 0 | GameObject instance ID |
| `path` | string | No* | null | Hierarchy 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.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `name` | string | No* | null | GameObject name |
| `instanceId` | int | No* | 0 | GameObject instance ID |
| `path` | string | No* | null | Hierarchy path |
| `anchorMinX` / `anchorMinY` | float | No | null | Anchor min |
| `anchorMaxX` / `anchorMaxY` | float | No | null | Anchor max |
| `pivotX` / `pivotY` | float | No | null | Pivot |
| `anchoredPosX` / `anchoredPosY` / `anchoredPosZ` | float | No | null | Anchored position 3D |
| `sizeDeltaX` / `sizeDeltaY` | float | No | null | Size delta |
| `offsetMinX` / `offsetMinY` | float | No | null | Offset min |
| `offsetMaxX` / `offsetMaxY` | float | No | null | Offset max |
| `localPosX` / `localPosY` / `localPosZ` | float | No | null | Local position |
| `localRotX` / `localRotY` / `localRotZ` | float | No | null | Local euler rotation |
| `localScaleX` / `localScaleY` / `localScaleZ` | float | No | null | Local scale |
| `width` / `height` | float | No | null | Size with current anchors |

**Returns:** same shape as `ui_get_rect_transform`.

### ui_set_rect_transform_batch
Set full RectTransform data for multiple UI elements.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `items` | json string | Yes | - | 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

```python
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.

## Common Errors

Full transport-level codes (COMPILING/RATE_LIMIT etc.) → ../../references/protocol-error-codes.md

| Error | Trigger | Fix |
|---|---|---|
| `TARGET_NOT_FOUND` | The parent GameObject, UI element, RectTransform, Text/Image/Selectable component, or sprite asset could not be found. | Use `ui_find_all`, `gameobject_find`, or `scene_get_hierarchy` to locate the element, and verify sprite paths with `asset_find`. |
| `SEMANTIC_INVALID` | An invalid value was supplied, such as an unknown anchor preset, layout type, alignment, or name/path with separators. | Choose a valid preset/type from the error context (e.g., `MiddleCenter`, `Vertical`, `TopLeft`) and retry. |
| `SKILL_ERROR` | A selection-based operation failed because fewer than the required number of UI elements were selected (e.g., `Select at least 2 UI elements`). | Select the required UI elements in the Hierarchy before calling alignment/distribution skills. |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.