Skip to content

SKINT

Purpose

A theming layer for Unity editor UI. SKINT gives editor windows a consistent, user-customisable look: themed labels, toggles, sliders, fields, popups, panels and progress bars, all driven by a single theme the user edits in a visual designer and saves as named presets.

It is editor-only. Nothing in SKINT ships in a player build, and that is enforced by a test rather than by convention.

Owns

  • The theme model and its persistence
  • Theme-aware GUIStyle and geometry generation
  • The themed widget set consumers draw with
  • The Theme Designer and Widget Gallery windows
  • Named preset save / load / delete, with a restorable trash
  • Resolving its own install location at runtime

Does NOT Own

  • Runtime UI of any kind — uGUI, UI Toolkit, IMGUI in play mode
  • Game or editor behaviour beyond presentation
  • Any render pipeline concern
  • Project or scene state
  • Another product's preferences, including anything under a SnapPro_ key

Allowed Dependencies

SKINT may depend on:

  • UnityEditor and UnityEngine
  • The .NET base class library

SKINT depends on nothing else. No packages, no third-party code, no network access, no telemetry. The assembly definition is editor-only (includePlatforms: ["Editor"]), which is what keeps it out of player builds.

Notes

The territory boundary here is narrow on purpose: SKINT draws editor chrome and nothing else. It was extracted from Snap Studio Pro's Editor/UI/Styling territory, which still describes the same concern inside that product.

EditorPrefs is global to a Unity installation rather than per project, which shapes several decisions in this package. The active theme is therefore shared across every project opened in the same Unity version, and SKINT is careful to write only keys it owns — a guarantee PrefKeyTests asserts directly.

SKINT is distributed as a folder the customer copies in, not as a UPM package. That is a settled choice across these tools. SkintPaths resolves the install location at runtime from the assembly definition, so copying the folder anywhere works rather than half-working.

Future Candidates

  • Borders and corner radii are still hardcoded; only colour, font size and spacing are themeable.
  • Preset delete undo is single level.