World Utilities / Guides
Build a settings menu
A world settings panel with a mirror toggle, a music volume slider and a saved accent color - no scripts.
By the end of this guide your world has a small settings panel that remembers each player’s choices between visits:
┌─ Settings ─────────────────────────────┐
│ Mirror [ ON ] │
│ Music volume ━━━━━━━━━●━━━━ 65% │
│ Accent color [ color picker ] │
└────────────────────────────────────────┘
You need: a world project with World Utilities installed, a canvas set up for VRChat (world space, VRC Ui Shape
component), a mirror object and an AudioSource playing music.
1. Create the values
Persisted values are the right kind here - settings are personal, and players expect them to stick.
- Create an empty game object
Persisted Settings- following the best practice of grouping values by kind. - From
Packages/VRCTools - World Utilities/Runtime/Prefabs/Persisted Valuesdrag the following into it and rename each one right away (persisted values are networked objects and need unique paths):Persisted Boolean→ rename toMirror Enabled, set Key tosettings.mirror_enabledPersisted Float→ rename toMusic Volume, set Key tosettings.music_volume, Default Value0.65, enable Restrict Value (0 .. 1) and Prevent Nuisance Updates with a difference of0.001Persisted Color→ rename toAccent Color, set Key tosettings.accent_colorand pick a default color
Keys are how VRChat finds the stored data next time. Choose them once and don’t rename them later.
2. Connect the mirror
- Drag in
Local Values/Applicators/Object Toggle Applicator. - Leave Type on
LOCALand reference theMirror Enabledvalue - persisted values plug into local fields. - Add the mirror game object to Targets.
On your canvas, add Local Values/UI/Button Toggle, reference Mirror Enabled and enable Alternate Label if you’d like
“On”/”Off” texts.
3. Connect the music volume
- Add
Local Values/UI/Sliderto the canvas and referenceMusic Volume. Set the UnitySliderto0 .. 1. - Add
Local Values/UI/Percentage Labelnext to it and reference the same value. With a text template of{0:0}%and the default multiplier of100, it shows65%. - Apply the volume to the
AudioSource. World Utilities has no audio applicator, so either:- drive the volume with an animation via the Animator Parameter applicator, or
- use a tiny script like the
MusicVolumeexample in Scripting.
4. Connect the accent color
- Add
Local Values/UI/Color Pickerto the canvas and referenceAccent Color. - Add
Local Values/Applicators/Material Property Applicator:- Target
PROPERTY_BLOCK, Renderer = the object to recolor - Add a Color Property entry: value
Accent Color, property_Color(or_EmissionColorfor glowing trims)
- Target
5. Test
Enter play mode (or use ClientSim): flip the toggle, drag the slider, pick a color. Persisted values only load once VRChat restores player data, which ClientSim simulates at start-up. Upload and rejoin the world to verify the settings persist.
Where to go from here
- Let the instance owner override the mirror for everyone: Owner-controlled features
- Derive secondary colors from the accent: Color Adjustment
- Add a “reset to defaults” button: Event Broadcaster calling
_Reseton each value