본문으로 건너뛰기
cccskills
무료GitHub에 공개

ui-imgui

Unity IMGUI (Immediate Mode GUI) expert for legacy editor tools using OnGUI/immediate mode. Generates and modifies IMGUI EditorWindows, custom Inspectors, PropertyDrawers, and scripts with IMGUI code (OnGUI, OnInspectorGUI). Use when maintaining existing IMGUI editor code or when user explicitly requests IMGUI/OnGUI.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop스타 4(GitHub 4 + cccskills 0)

실행 점수 미검증

설치 방법 보기

포함된 파일(3)

  • SKILL.md6.5 KB
  • references/gui-elements.md3.5 KB
  • references/templates.md2.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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:

  • User is modifying existing IMGUI code
  • User explicitly requests IMGUI/immediate mode
  • The project exclusively uses IMGUI for editor tools

When activated, read the reference files:

When to Use This Skill

IMPORTANT: This skill is for legacy IMGUI code only. Use this skill when:

  • User is maintaining/updating existing IMGUI editor code (files with OnGUI(), OnInspectorGUI())
  • User explicitly requests IMGUI/immediate mode GUI
  • Project exclusively uses IMGUI for all editor tools

Do NOT use this skill for:

  • New editor windows (use UI Toolkit with CreateGUI() instead)
  • New custom inspectors (use UI Toolkit instead)
  • Requests that don't explicitly mention IMGUI or OnGUI

Legacy IMGUI is used for:

  • Editor windows — EditorWindow classes with OnGUI()
  • Custom inspectors — Editor, PropertyDrawer classes with OnInspectorGUI()
  • Debug overlays — OnGUI() in MonoBehaviour (runtime)

IMGUI is not for runtime game UI — use UI Toolkit or uGUI instead.

Scope

Generate only what is requested (for legacy IMGUI code):

RequestOutputNote
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 overlayMonoBehaviour with OnGUI()Runtime debugging
Update existing IMGUI scriptModify existing OnGUI codeAlways appropriate

Clarify if ambiguous:

  • "inspector" → Custom Editor for a specific type, or PropertyDrawer? Also ask: Should this use UI Toolkit (modern) or IMGUI (legacy)?
  • "editor window" → First ask: Should this use UI Toolkit (modern/CreateGUI) or IMGUI (legacy/OnGUI)?
  • "tool window" → EditorWindow with what functionality? Which UI system?

Conventions

Follow project patterns first. Search existing editor scripts before applying defaults.

TypeConventionGoodBad
Script namesPascalCaseMyToolWindow.csmy-tool-window.cs
EditorWindow[Name]Window.csLevelEditorWindow.csLevelEditor.cs
Custom Editor[Type]Editor.csEnemyEditor.csEnemyInspector.cs
PropertyDrawer[Type]Drawer.csRangeDrawer.csRangePropertyDrawer.cs
LocationEditor folderAssets/Editor/Assets/Scripts/

Editor folder is required — Scripts using UnityEditor namespace must be in an Editor folder or they will fail to build.

Workflow

  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

Script Structure

EditorWindow

[MenuItem attribute] → adds to menu
ShowWindow() static method → opens window
OnGUI() → draws interface
OnEnable/OnDisable → initialization/cleanup

Custom Editor

[CustomEditor attribute] → targets component type
OnInspectorGUI() → draws inspector
OnEnable() → cache SerializedProperties
serializedObject.Update/ApplyModifiedProperties → undo support

PropertyDrawer

[CustomPropertyDrawer attribute] → targets type or attribute
OnGUI(Rect, SerializedProperty, GUIContent) → draws property
GetPropertyHeight() → custom height if needed

Key Rules

  • Cache GUIStyle objects — never create new GUIStyle in OnGUI (causes memory allocation every frame)
  • Use SerializedProperty — for proper undo/redo support in inspectors
  • Call ApplyModifiedProperties() — after any serialized object changes
  • Use EditorGUILayout — for editor scripts (auto-layout)
  • Use GUILayout — for runtime OnGUI
  • Begin/End pairs — always match BeginHorizontal with EndHorizontal, etc.
  • Editor folder required — scripts fail to build if not in Editor folder

Layout Basics

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--;
}

Common Patterns

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();

Best Practices

  • Use SerializedObject and SerializedProperty for undo support
  • Cache property references in OnEnable()
  • Use EditorUtility.SetDirty() only for non-serialized changes
  • Use Undo.RecordObject() before modifying objects directly
  • Use EditorStyles for consistent appearance
  • Use GUILayout.FlexibleSpace() to push elements apart

See references/templates.md for complete script templates. See references/gui-elements.md for full element reference.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

Build and operate a live game using Unity Services. Use when the user needs to implement, connect, or debug backend-driven features — battle passes, achievements, player progression, cloud saves, leaderboards, matchmaking, virtual economies, server-authoritative logic, anti-cheat, player accounts and authentication, remote configuration, feature flags, A/B testing, analytics, or cloud resource deployment. Triggers on live-ops, live service, backend, server authority, cloud code, cloud save, remote config, player data, retention, monetization loop, season pass, ranking, multiplayer sessions, lobbies, or any Unity Services integration.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

Kern engine critical invariants: coordinate system, UI Toolkit positioning, RenderTexture blit, LifetimeScope/scene structure, VolumeProfile editor API, camera pixel-grid alignment, performance analysis rules, profiler interpretation, and the no-fallback policy. Use when touching coordinates, WorldToScreen, UI element anchoring, RenderTexture, LifetimeScope, VolumeProfile, camera, FPS analysis, Profiler markers, or any code near an "invariant" comment. Triggers on: CoordinateUtils, MapManager.WorldHeight, RuntimePanelUtils, CameraTransformWorldToPanel, WorldToLocal, PositionWriteEpsilon, CameraPixelGridAligner, LifetimeScope, RegisterComponent, VolumeProfile, AssetDatabase.AddObjectToAsset, EditorLoop, VSync, fallback, paper white, FPS, frame time.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

Kern project C# conventions, namespace rules, DI/VContainer patterns, and assembly layer boundaries. Use when writing, editing, or reviewing any C# file — MonoBehaviours, ScriptableObjects, services, contracts, factories, or editor scripts. Triggers on: namespace, nullable, asmdef, VContainer, RegisterComponent, IObjectResolver, composition root, Kern.Contracts, primary constructor, record struct, SA1513, _camelCase, PascalCase, asmref, MonoScript.GetClass.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

fmod-sync

무료

Synchronize and compile FMOD Studio banks into StreamingAssets

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

Kern HDR/color pipeline contract: scene-referred linear working space, paper white units, radiance format rules, URP output transform ownership, DisplayFinal perceptual/linear space, UI brightness, HDR calibration screen, safe-start HDR switch, and HDROutputController usage. Use when touching lighting shaders, glow, bloom, tonemapping, post-processing, color grading, LUT, display output, UI colors, calibration, or any code with DisplaySettings / HDROutput / PaperWhite / Tonemapping / CompositeFinal / DisplayFinal / VisualTuning. Triggers on: saturate on radiance, clamp color, sRGB in shader, UNorm light buffer, ARGBHalf, paper white, HDROutputReconciler, VisualTuning, BT2390, detectPaperWhite, HDRCalibrationScreen, HDRSwitchPending, HDROutputSettings.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

MinesReborn/Fodislop42026년 10월 26일 업데이트

MinesReborn의 스킬 모두 보기

이 스킬의 문제 신고