Setting Types
Setting Types are Blueprint classes that define how settings work. They determine what a setting controls, how it's applied, and where it's saved.
What is a Setting Type?
A Setting Type is a Blueprint class (inheriting from SettingType) that configures:
- Domain: Global or Player
- Application Strategy: How the setting is applied (console variables, input bindings, etc.)
- Persistence Strategy: Where the setting is saved (config files, save games, etc.)
- Key Fragment: Optional identifier fragments
- Controlled Setting Keys: Optional settings controlled by this setting
Creating a Setting Type
- In Content Browser, right-click → Blueprint Class
- Choose Setting Type as parent
- Name it based on behavior (e.g.,
Setting_Globalfor console variables) - Open and configure:
- Select Domain (Global or Player)
- Add Application Strategy from dropdown
- Add Persistence Strategy from dropdown
Reusing Setting Types
You typically create one Setting Type per behavior pattern, not one per setting.
Multiple Settings Per Type
A single Setting Type can be used for many settings. Widgets specify which specific setting they control using the Sub Key property:
Example: A single Setting_Global can be used for all console variable settings:
- Shadow quality widget → Setting Type:
Setting_Global, Sub Key:sg.ShadowQuality - Texture quality widget → Setting Type:
Setting_Global, Sub Key:sg.TextureQuality - Audio volume widget → Setting Type:
Setting_Global, Sub Key:GameAudio.Volume
The Sub Key identifies which specific setting the widget controls:
- Console variable widgets - The console variable name (e.g.,
sg.ShadowQuality) - Input mapping widgets - The input action name (from the widget's Mapping Name property)
Single Setting Per Type
Create a dedicated Setting Type when a setting needs special logic or configuration. In this case, widgets don't need a Sub Key:
Example: The example project's Setting_Resolution needs custom logic (a value mask on its CVar strategy to extract resolution from a larger value). The resolution widget references Setting_Resolution with no Sub Key.