How It Works
Each setting is defined as a ScriptableObject by the developer and is registered in a registry. The BaseSettingsManager singleton uses this registry to handle changes, resets, and save and load. Save and load is done via ISaveAndLoad, which allows users to define their own way of saving and loading the settings. Setting components, like Button and FloatSlider, each take a setting definition and passes change signals to or receives resets signals from the BaseSettingsManager.
Core types
Future Plans
In the future, I plan to implement built-in setting behaviors that automatically apply changes to the Unity engine. This might include window mode, resolution, quality setting, and more.