Treasure chest of Unity developer tools. Professional inspector tooling, high-performance utilities, spatial queries, and 20+ editor tools.
Centralized configuration for all inspector features.
The UnityHelpersSettings asset provides project-wide configuration for pagination, colors, animations, and history capacity across all inspector attributes and custom drawers. Configure once, apply everywhere.
Location: ProjectSettings/UnityHelpersSettings.asset
Access in Unity:
Edit > Project Settings)ProjectSettings/UnityHelpersSettings.asset directlyNote: The asset is created automatically on first use. If missing, any inspector feature will generate it.

Controls how many items are shown per page in various UI elements.
Default: 25
Range: 5 - 500
Applies to: [StringInList] attribute
Description: Number of string options shown per page in the dropdown.
Usage:
[StringInList(typeof(SceneLibrary), nameof(SceneLibrary.GetAllSceneNames))]
public string sceneName; // Uses StringInListPageSize
Default: 15
Range: 5 - 500
Applies to: SerializableHashSet<T>, SerializableSortedSet<T>
Description: Number of set elements shown per page in the inspector.
Usage:
public SerializableHashSet<string> items; // Uses SerializableSetPageSize
Default: On
Applies to: SerializableHashSet<T>, SerializableSortedSet<T>
Description: Controls whether SerializableSet inspectors start collapsed the first time they are drawn. When enabled, sets render as a single foldout header until the user expands them; when disabled, the inspector opens automatically. This is only a default—explicit script/test changes to SerializedProperty.isExpanded or [WSerializableCollectionFoldout] overrides still win.
Default: 15
Range: 5 - 250
Applies to: SerializableDictionary<TKey, TValue>, SerializableSortedDictionary<TKey, TValue>
Description: Number of dictionary entries shown per page in the inspector.
Usage:
public SerializableDictionary<string, GameObject> prefabs; // Uses SerializableDictionaryPageSize
Default: On
Applies to: SerializableDictionary<TKey, TValue>, SerializableSortedDictionary<TKey, TValue>
Description: Determines whether SerializableDictionary inspectors begin collapsed before any user interaction. Disable this to have dictionaries open automatically in newly created inspectors. Like the set toggle, this only establishes the default; [WSerializableCollectionFoldout] or manual changes to SerializedProperty.isExpanded take precedence on a per-field basis.
Default: On
Applies to: SerializableHashSet<T>
Description: Controls whether the manual entry foldout in SerializableSet inspectors animates when expanding or collapsing.
Default: 2
Range: 2 - 12
Applies to: SerializableHashSet<T>
Description: Animation speed for the SerializableSet manual entry foldout when SerializableSetFoldoutTweenEnabled is enabled.
Default: On
Applies to: SerializableSortedSet<T>
Description: Controls whether the manual entry foldout in SerializableSortedSet inspectors animate when expanding or collapsing.
Default: 2
Range: 2 - 12
Applies to: SerializableSortedSet<T>
Description: Animation speed for the SerializableSortedSet manual entry foldout when SerializableSortedSetFoldoutTweenEnabled is enabled.
Default: 15
Range: 5 - 50
Applies to: [WEnumToggleButtons] attribute (when pagination enabled)
Description: Number of toggle buttons shown per page for enums with many values.
Usage:
[WEnumToggleButtons(enablePagination: true)]
public ManyOptionsEnum options; // Uses EnumToggleButtonsPageSize
Default: 6
Range: 1 - 20
Applies to: [WButton] attribute (grouped by draw order)
Description: Number of button actions shown per page.
Usage:
[WButton("Action 1", drawOrder: 0)]
private void Action1() { }
// ... 10 more buttons with drawOrder: 0 ...
// Pagination kicks in after WButtonPageSize buttons
Default: 5
Range: 1 - 10
Applies to: [WButton] methods with return values
Description: Number of recent results to keep per method per target.
Usage:
[WButton("Roll Dice")] // Uses WButtonHistorySize
private int RollDice() => Random.Range(1, 7);
[WButton("Custom History", historyCapacity: 20)] // Overrides global setting
private int CustomHistory() => Random.Range(1, 100);
Default: Bottom
Options: Top, Bottom
Applies to: [WButton] buttons using groupPlacement: WButtonGroupPlacement.UseGlobalSetting
Description: Default placement of buttons in the inspector.
Note: Use the groupPlacement parameter on individual buttons to override this setting:
groupPlacement: WButtonGroupPlacement.Top → Always render above inspector propertiesgroupPlacement: WButtonGroupPlacement.Bottom → Always render below inspector propertiesgroupPlacement: WButtonGroupPlacement.UseGlobalSetting → Follow this global setting (default)Default: StartExpanded
Options: Always, StartExpanded, StartCollapsed
Applies to: [WButton] grouped buttons
Description: Controls foldout behavior for button groups.
Default: true
Applies to: [WButton] grouped buttons
Description: Enable smooth animation when expanding/collapsing button groups.
Default: 2.0
Range: 2.0 - 12.0
Applies to: [WButton] grouped buttons (when tween enabled)
Description: Animation speed for button group fold/unfold.
Default: 4
Range: 0 - 32
Applies to: [WGroup] attributes using UseGlobalAutoInclude
Description: Default number of fields to auto-include in a WGroup.
Usage:
// Uses WGroupAutoIncludeRowCount (default: 4)
[WGroup("stats", "Stats")]
public int strength; // Field 1: in group
public int agility; // Field 2: in group (auto-included)
public int intelligence; // Field 3: in group (auto-included)
[WGroupEnd("stats")] // luck IS included (field 4), then group closes
public int luck; // Field 4: in group (last field)
// Explicit override
[WGroup("combat", "Combat", autoIncludeCount: 2)]
public float health; // Field 1: in group
[WGroupEnd("combat")] // mana IS included (field 2), then group closes
public float mana; // Field 2: in group (last field)
Default: true
Applies to: [WGroup] with collapsible: true when startCollapsed is omitted
Description: Controls the initial foldout state for collapsible WGroups. Disable this to have collapsible groups start expanded unless the attribute explicitly passes startCollapsed: true.
Projects can still override per group via the
startCollapsedconstructor argument or theCollapseBehaviornamed argument:[WGroup( "advanced", collapsible: true, CollapseBehavior = WGroupAttribute.WGroupCollapseBehavior.ForceExpanded )]
Default: true
Applies to: [WGroup] with collapsible: true
Description: Enable smooth animation when expanding/collapsing groups.
Default: 2.0
Range: 2.0 - 12.0
Applies to: [WGroup] with collapsible: true (when tween enabled)
Description: Animation speed for group fold/unfold.
Controls behavior for the [WInLineEditor] attribute that embeds nested inspectors inline.
Default: StartCollapsed
Options: AlwaysExpanded, StartExpanded, StartCollapsed
Applies to: [WInLineEditor] without explicit mode
Description: Default foldout behavior for inline editors.
Note: Use the mode parameter on individual attributes to override this setting:
// Uses global setting
[WInLineEditor]
public AbilityConfig config;
// Always shows inline inspector
[WInLineEditor(WInLineEditorMode.AlwaysExpanded)]
public AbilityConfig alwaysVisible;
// Starts collapsed regardless of global setting
[WInLineEditor(WInLineEditorMode.FoldoutCollapsed)]
public AbilityConfig collapsedByDefault;
Default: true
Applies to: [WInLineEditor] with foldout modes
Description: Enable smooth animation when expanding/collapsing inline editors.
Default: 2.0
Range: 2.0 - 12.0
Applies to: [WInLineEditor] with foldout modes (when tween enabled)
Description: Animation speed for inline editor fold/unfold.
Palette keys keep WButton and WEnumToggleButtons visuals consistent across the project. Open the Color Palettes foldout inside UnityHelpersSettings to add or edit entries. Each key is matched at draw time against the colorKey parameter on the corresponding attribute; unknown keys fall back to theme-aware defaults.
Applies to: [WButton] via the colorKey parameter
Reserved keys: Default, Default-Light, Default-Dark, WDefault (legacy)
Description: Each entry stores a button color and a readable text color. Reserved keys auto-sync to the current editor skin and cannot be deleted. Custom keys are ideal for highlighting dangerous or primary actions across multiple inspectors.
Usage:
Highlight) and pick button/text colors.[WButton("Submit", colorKey: "Highlight")]
private void Submit() { }
Applies to: [WEnumToggleButtons] via the ColorKey property
Reserved keys: Default, Default-Light, Default-Dark
Description: Each entry defines four colors (selected background/text and inactive background/text). Use this dictionary to align enum toggle palettes with the rest of your UI or to clearly separate different tool contexts.
Usage: Add a key under WEnumToggleButtons Custom Colors, then assign it per field:
[WEnumToggleButtons(ColorKey = "Difficulty")]
public DifficultyLevel difficulty;
See Pagination Settings.
The UnityHelpersSettings asset is automatically created on first use, but you can create it manually:
ProjectSettings/UnityHelpersSettings.asset#if UNITY_EDITOR
using WallstopStudios.UnityHelpers.Editor.Settings;
UnityHelpersSettings settings = UnityHelpersSettings.Instance;
// Settings asset is now created
#endif
StringInListPageSize: 50
SerializableSetPageSize: 30
EnumToggleButtonsPageSize: 25
WButtonPageSize: 12
Use case: Large monitors, scrolling preference over pagination
StringInListPageSize: 10
SerializableSetPageSize: 5
EnumToggleButtonsPageSize: 8
WButtonPageSize: 4
Use case: Laptop screens, prefer focused views
WButtonFoldoutTweenEnabled: false
WGroupTweenEnabled: false
InlineEditorFoldoutTweenEnabled: false
Use case: Slower machines, prefer instant feedback
WButtonFoldoutSpeed: 8.0
WGroupTweenSpeed: 8.0
InlineEditorFoldoutSpeed: 8.0
Use case: Snappy UI feel
WButtonHistorySize: 10
Use case: Heavy testing/debugging workflows
Problem: Can’t find UnityHelpersSettings.asset
Solution:
ProjectSettings/UnityHelpersSettings.assetProblem: Modified settings but inspector doesn’t update
Solution:
Ctrl+S or Cmd+S)Assets > Reimport All)Problem: Custom color key doesn’t apply
Solution:
Next Steps: