A settings menu that builds itself from data
Modular Settings UI is a complete, reusable settings-menu system for Unity games. Instead of hand-wiring every options screen, you describe your settings as data and the system builds and manages the UI for you.
Settings are defined with ScriptableObjects — grouped into pages, each with a display name, description, and behaviour — so designers can add, reorder, and configure options without touching code. The library ships with 30+ common setting types out of the box across Audio, Graphics, Gameplay, Controls, Localisation, and Debug categories: from master volume and resolution to VSync, quality presets, FOV, gamepad dead zones, and an FPS counter.
Each setting binds to a UI widget — toggle, slider, dropdown, or selector — and hovering a widget shows a live description panel so players know exactly what each option does. Graphics settings can advertise a performance impact (low / medium / high) to guide players.
Values persist automatically as JSON in the player's persistent data folder, with instant-save or save-on-exit modes. A change-callback system lets any part of your game react the moment a setting changes, and specialized types handle the fiddly bits — screen resolution, window mode, and audio input/output device selection — for you.
Features
- Data-driven Define settings as ScriptableObject groups — no per-option UI code.
- 30+ built-in setting types Audio, Graphics, Gameplay, Controls, Localisation, and Debug categories, ready to use.
- Widget library Toggle, slider, dropdown, and selector widgets bind directly to your settings.
- Live descriptions Hovering a setting shows an explanatory panel for the player.
- Performance impact hints Graphics settings can show a low / medium / high impact badge.
- Specialized types Resolution, window mode, and audio input/output device pickers built in.
- Automatic JSON persistence Saves to
persistentDataPath; instant-save or save-on-exit. - Reactive callbacks Subscribe to changes with
AddTrigger(SettingType, Action). - Typed API
GetBool / GetFloat / GetInt / GetString(SettingType)for reading values anywhere. - Built for Unity 6 Uses TextMeshPro and the new Input System.
Technical details
- Namespace
Dandev.Unity_Modular_Settings_UI - Built withUnity 6 (6000.3), TextMeshPro, and the new Input System
- Configuration
SettingsGroupScriptableObject→SettingTypeScriptableObject, created from theSettings/New Settings Groupasset menu - Manager
UserSettingssingleton (DontDestroyOnLoad) with typed getters - Setting typesBool, Float, Int, String + specialized Int (Resolution, WindowMode, AudioInputDevice, AudioOutputDevice)
- Built-in settings30+
SettingTypevalues across Audio / Graphics / Gameplay / Controls / Localisation / Debug - PersistenceJSON at
Application.persistentDataPath/UserSettings.json; InstantSave or SaveOnExit - Reactivity
AddTrigger(SettingType, Action)callbacks fire when a value changes - WidgetsToggle, Slider, Dropdown, Selector; hover-driven description panel; per-setting impact (None / Low / Medium / High)
This package is in active development and its API may change before release. AI coding assistants were used to help write and refactor the source code; all code was reviewed and tested by the developer. The package contains no AI-generated art, audio, or other assets.