WagSettings Cheatsheet

One page. Everything else is in the docs.

Zero to menu

Tools → WaggleBum → WagSettings → Setup, tick the categories, press Generate. You get setting assets, a SettingsProfile holding them, and an AudioMixer with Master, Music and SFX exposed, all under Assets/WagSettings/Resources/. Re-running is safe: it creates what is missing and never overwrites an asset you have edited.

Then, in your menu scene:

UI ToolkituGUI
A UI Document, then Settings Menu (UI Toolkit) on it. Assign the profile, WagSettingsMenu.uxml, WagSettingsMenu.uss; set the Panel Settings theme to WagSettingsUI.tss.Copy Sample Scenes/Quick Start/Prefabs/WagSettingsMenu (uGUI).prefab, point it at your profile.

Press Play. The profile is in Resources, so a WagSettings Manager is created at startup and the menu shows its profile. To choose where the manager lives — and to give appliers a home — add WaggleBum → WagSettings → WagSettings Manager to the scene yourself.

Keys

category.name. The part before the dot is the tab; the part after becomes the label.

audio.master   audio.music   audio.sfx   audio.master.mute
display.width  display.height  display.refreshRate  display.windowMode  display.vsync
graphics.qualityTier  graphics.gamma  graphics.renderScale  graphics.bloom  graphics.ambientOcclusion  graphics.motionBlur
accessibility.uiScale  accessibility.colorblindPreset  accessibility.reduceMotion  accessibility.subtitleScale  accessibility.subtitleBackground
controls.rebinds  controls.sensitivity  controls.invertY

Those are what setup generates and what every applier binds by default. Add your own with Assets → Create → WaggleBum → WagSettings → …, then add the asset to the profile.

Read and write in code

using WaggleBum.WagSettings;

float master = WagSettings.Get<float>("audio.master");
WagSettings.Set("audio.master", 0.8f);                       // pending - the game does not change yet
WagSettings.Definition<float>("audio.master").Changed += value => { };

WagSettings.IsDirty;        // anything pending?
WagSettings.Apply();        // write every pending value to the store, in one batch
WagSettings.Revert();       // throw pending values away
WagSettings.ResetAll();     // authored defaults, pending until applied

That works anywhere a WagSettingsManager is running — one you placed, or the one created at startup because the profile is in a Resources folder. With none, every call throws and says what to add. WagSettings.Registry is the registry itself when you want more than the facade offers.

Appliers

An applier turns a value into a Unity effect. Add the component under the WagSettings Manager and assign what it drives — the manager attaches everything under it when it starts. Nothing to write.

ApplierDrivesApplies
Audio Mixer Applierexposed parameters on the assigned AudioMixerlive
Resolution ApplierScreen resolution, window mode, VSyncon Apply
Quality Applierquality tier, gamma, render scale, post-effect toggleslive
Accessibility ApplierUI scale, colourblind matrix, reduce motion, subtitles — as events and shader globalslive
Rebind Applieran InputActionAsset's binding overrides (Input System)live

Attach throws on a key the registry does not hold. Blank a key on the applier to skip it. An applier that must live elsewhere: WagSettings.Manager.Attach(applier).

Binders (uGUI)

Put the binder on the control and set its key. It finds the menu on a parent.

ControlBinder
SliderSlider Setting Binder
ToggleToggle Setting Binder
DropdownDropdown Setting Binder — options come from the EnumSetting, or from the display for display.resolution
InputFieldInput Field Setting Binder
ButtonSettings Command Button — Apply, Revert or Reset
InputFieldSettings Search Binder

UI Toolkit needs none of this: rows are built from the profile.

Where things are

Generated assetsAssets/WagSettings/Resources/
The sampleWaggleBum/WagSettings/Sample Scenes/Quick Start/ — a scene per UI framework
The uGUI menu prefab…/Quick Start/Prefabs/WagSettingsMenu (uGUI).prefab
Menu stylingRuntime/UI/UIToolkit/WagSettingsMenu.uss and the variables in WagSettingsUI.tss
SetupTools → WaggleBum → WagSettings → Setup
The managerWaggleBum → WagSettings → WagSettings Manager, or created at startup from Resources

When it throws

Loudly and on purpose: a binder on a key the profile lacks, an applier on a key the registry lacks, an unexposed mixer parameter, an empty slot in a profile. Each names the key. A control that silently does nothing is worse than a failure that says why.