2d-pixel-perfect
Sets up, diagnoses, and fixes pixel perfect 2D rendering with PixelPerfectCamera in URP or Built-in. Use when a retro-style or…
Generates and modifies Unity IMGUI editor code such as EditorWindows, custom Inspectors, PropertyDrawers, and OnGUI scripts. Use for IMGUI or OnGUI or maintaining existing IMGUI code.
$ npx -y skills add unity-technologies/skills --skill ui-imgui --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ui-imguiContext preview
The summary Claude sees to decide when to auto-load this skill.
Generates and modifies Unity IMGUI editor code such as EditorWindows, custom Inspectors, PropertyDrawers, and OnGUI scripts. Use for IMGUI or OnGUI or maintaining existing IMGUI code.
name: ui-imgui description: Generates and modifies Unity IMGUI editor code such as EditorWindows, custom Inspectors, PropertyDrawers, and OnGUI scripts. Use for IMGUI or OnGUI or maintaining existing IMGUI code.
**Before proceeding:** If the user is asking about creating a **new** editor window, custom inspector, or PropertyDrawer without explicitly mentioning IMGUI/OnGUI, recommend using UI Toolkit (CreateGUI) instead, as it's the modern approach. Only proceed with IMGUI if:
When activated, read the reference files:
**IMPORTANT:** This skill is for **legacy IMGUI code only**. Use this skill when:
**Do NOT use this skill for:**
**Legacy IMGUI is used for:**
IMGUI is **not** for runtime game UI — use UI Toolkit or uGUI instead.
**Generate only what is requested (for legacy IMGUI code):**
| Request | Output | Note | |---------|--------|------| | Editor window (IMGUI/OnGUI) | `EditorWindow` with `OnGUI()` | Only if explicitly IMGUI | | Custom inspector (IMGUI) | `Editor` with `OnInspectorGUI()` | Only if explicitly IMGUI | | Property drawer (IMGUI) | `PropertyDrawer` with `OnGUI()` | Only if explicitly IMGUI | | Debug overlay | `MonoBehaviour` with `OnGUI()` | Runtime debugging | | Update existing IMGUI script | Modify existing OnGUI code | Always appropriate |
**Clarify if ambiguous:**
**Follow project patterns first.** Search existing editor scripts before applying defaults.
| Type | Convention | Good | Bad | |------|------------|------|-----| | Script names | PascalCase | `MyToolWindow.cs` | `my-tool-window.cs` | | EditorWindow | `[Name]Window.cs` | `LevelEditorWindow.cs` | `LevelEditor.cs` | | Custom Editor | `[Type]Editor.cs` | `EnemyEditor.cs` | `EnemyInspector.cs` | | PropertyDrawer | `[Type]Drawer.cs` | `RangeDrawer.cs` | `RangePropertyDrawer.cs` | | Location | `Editor` folder | `Assets/Editor/` | `Assets/Scripts/` |
**Editor folder is required** — Scripts using `UnityEditor` namespace must be in an `Editor` folder or they will fail to build.
1. **Analyze** — Determine script type needed (EditorWindow, Editor, PropertyDrawer, etc.) 2. **Search** — Find existing editor scripts to match patterns 3. **Follow project patterns** — Match folder structure and naming 4. **Create script** — Use appropriate base class and attributes 5. **Implement OnGUI** — Build the interface with layout groups
[MenuItem attribute] → adds to menu ShowWindow() static method → opens window OnGUI() → draws interface OnEnable/OnDisable → initialization/cleanup
[CustomEditor attribute] → targets component type OnInspectorGUI() → draws inspector OnEnable() → cache SerializedProperties serializedObject.Update/ApplyModifiedProperties → undo support
[CustomPropertyDrawer attribute] → targets type or attribute OnGUI(Rect, SerializedProperty, GUIContent) → draws property GetPropertyHeight() → custom height if needed
**Horizontal grouping:**
EditorGUILayout.BeginHorizontal(); // elements appear side by side EditorGUILayout.EndHorizontal();
**Vertical grouping:**
EditorGUILayout.BeginVertical("box");
// elements appear stacked, with box style
EditorGUILayout.EndVertical();**Scroll view:**
scrollPos = EditorGUILayout.BeginScrollView(scrollPos); // scrollable content EditorGUILayout.EndScrollView();
**Foldout section:**
showSection = EditorGUILayout.Foldout(showSection, "Section Name");
if (showSection)
{
EditorGUI.indentLevel++;
// section content
EditorGUI.indentLevel--;
}**Button with action:**
if (GUILayout.Button("Do Something"))
{
// action here
}**Property field with label:**
EditorGUILayout.PropertyField(myProperty, new GUIContent("Label"));**Object reference field:**
myObject = (MyType)EditorGUILayout.ObjectField("Label", myObject, typeof(MyType), true);**Disabled group:**
EditorGUI.BeginDisabledGroup(condition); // disabled elements EditorGUI.EndDisabledGroup();
A collection of reusable AI agent skills for Unity workflows. Compatible with Claude Code, GitHub Copilot, Cursor, Cline, and 50+ other agents.
Sets up, diagnoses, and fixes pixel perfect 2D rendering with PixelPerfectCamera in URP or Built-in. Use when a retro-style or…
Imports 3D models and point clouds with Asset Transformer Toolkit (formerly Pixyz), and creates, edits, and runs RuleSets,…
Routes Audio Sources into existing Audio Mixer Groups, classifying each source by what it plays. Use when the user asks about…
Builds node-based Editor tools with Unity Graph Toolkit (GTK) on Unity 6.6+: graphs, nodes, ports and validation, State Machine…
Builds and operates live games with Unity Services. Use when the user asks about backend or live-ops features such as player…
Creates and fixes Unity 2D physics in both systems, 2D Physics Core and the legacy Rigidbody 2D system. Use when the user asks…