Skip to content
Ilia Petrov-Komotskii edited this page Sep 25, 2026 · 22 revisions

Mane Tools for Unity

Technical information about installation, etc. can be found in the README.md.

  • ManeStyle — framed inspectors, ManeEditor, foldout blocks
  • Decorators — InfoBox, ReadOnly, Prefix/Postfix, AvailableIf; several can share one field
  • Property Drawers — DropdownList, item names, LayerSelector; one drawer per field
  • Serializable DateTime — UTC date types and calendar popup
  • Interface Serialization — SerializeInterface vs InterfaceOnly
  • Color Picker — window, HSL/luma/hex, Color / Color32 helpers
  • Editor Tools — overlay, freeze, screenshot, reference finders, hotkeys
  • Singletons — UnitySingleton, ScriptableSingleton, MainThreadDispatcher
  • Components — followers, state sync, state change detector
  • Animator — randomizer, parameter reset, animation events
  • Random and History — UnityRandom, points/colors/directions, vector caches
  • Extensions and Yield — GameObject/Transform/Vector helpers and wait instructions

About UI Toolkit

Inspectors and editor windows in this package use UI Toolkit. Legacy IMGUI (OnGUI, EditorGUILayout) support was dropped on purpose. IMGUI is immediate mode: Unity calls that method for layout, repaint, and every mouse or key event, and the method draws the whole GUI each time. UI Toolkit is retained mode. The element tree is built once and stays up until the data changes.

If you are still using IMGUI, you should stop and move to UI Toolkit. That is why:

  • The hierarchy is a document. UXML describes the tree and the reusable templates. In IMGUI the hierarchy is whichever GUILayout calls happened to run on that event.
  • The look is a stylesheet. USS is a CSS subset: flexbox, selectors, and states such as :hover and :disabled. Changing the layout does not mean rewriting the control. IMGUI keeps GUIStyle objects in the same method as the logic.
  • A callback runs when something happens. A click or a value change is an event. if (GUILayout.Button(...)) sits inside OnGUI, so the same block can run several times per interaction unless you filter Event.current.type.
  • Showing or hiding a field is safe. IMGUI layout breaks when the number of controls changes between the layout pass and the repaint pass (Getting control 0's position in a group with only 0 controls). UI Toolkit adds and removes elements on the tree.
  • The live UI can be inspected. The UI Toolkit Debugger shows the element hierarchy and which USS rules applied. IMGUI has no element tree to inspect.
  • One control serves many inspectors. A VisualElement, a UXML template, and a shared stylesheet are reused. ManeStyle is that shared chrome: framed blocks and a fixed label column, without a custom OnGUI on every component.

Overall

Runtime and editor code for the same feature are documented together.

Package id: com.manefunction.tools-unity.

Clone this wiki locally