Home - ManeFunction/ManeTools-Unity GitHub Wiki

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, Label, NonBreakingSpace, Prefix/Postfix, AvailableIf; several can share one field
  • Property Drawers — DropdownList, item names, LayerSelector, LimitedField, EasingCurve; one drawer per field
  • EditorButton — inspector button for a method (EasyButtons alternative)
  • Serializable DateTime — UTC date types and calendar popup
  • Interface Serialization — SerializeInterface vs InterfaceOnly
  • Color Tools — window, HSL/luma/hex, Color / Color32 helpers
  • Editor Tools — overlay, freeze, screenshot, reference finders, script templates, hotkeys
  • Singletons — UnitySingleton and ScriptableSingleton
  • Components — followers, state sync, state change detector
  • ParticleSystemUIScaler — scales a particle emitter size and count by a RectTransform size
  • Animator — randomizer, parameter reset, animation events
  • Easing — unit AnimationCurve presets (SinIn, ExpoOut, bounce, elastic, …) and the EasingCurve inspector dropdown
  • Random — UnityRandom, points, colors, and directions
  • HistoryCache — Vector2HistoryCache and Vector3HistoryCache
  • Extensions — GameObject, Transform, Rect, Vectors, and Scene helpers
  • Yield and Async — Yield instructions, MainThreadDispatcher and Extensions

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 whatever 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.
  • Decorators stack on one field. Unlike property drawers, they can be combined on the same field, and each one adds its own behavior.

Overall

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

Package id: com.manefunction.tools-unity.