模块边界
GGS 设置能力拆成三个模块,项目可以按需要接入:
GenericSettingsSystem提供按本地玩家运行的设置子系统、注册表、设置节点、Accessor、Provider 生命周期,以及 Apply、Cancel、Reload 流程。GenericSettingsSystemCommon提供可选的 Video、Audio、Input、Accessibility 和 Language Provider。GenericSettingsSystemUI将设置注册表接入GenericUISystem的 CommonUI 菜单与控件。核心设置运行时不依赖 UI 模块。
运行方式
每个 Local Player 有自己的 UGSS_GameSettingsSubsystem 和 Registry。设置节点可以来自 Definition Data Asset,也可以由运行时 Provider 注册。树结构用 Page、Collection 组织导航和值节点;值通过 Local 或 Shared Accessor 连接到项目状态。
Apply 会提交仍处于待应用状态的节点,并持久化引擎设置与 Shared Settings;Cancel 会恢复追踪到的初始值;Reload 会重新加载 Shared Settings 并从 Accessor 刷新注册值。Dynamic 节点可即时写入 Accessor,因此项目应决定哪些值适合预览、哪些应等到 Apply。
配套项目中的设置资产
当前 GenericGame 项目的 /Game/GenericGame/CommonSystem/SettingsCore/ 中有 Settings_Root、SettingsProvider_Video、SettingsProvider_Audio、SettingsProvider_Input、SettingsProvider_Accessibility 和 SettingsProvider_Language。在 /Game/GenericGame/CommonSystem/UICore/UI/Settings/ 中还能找到 WB_GSS_GameSettingsMenu 与 WB_GSS_GameSettingsPanel。前一组展示项目的定义与 Provider 配置,后一组展示可选的设置 UI 适配。它们属于项目 Content,不会因启用设置模块而自动复制到你的项目。完整路径见配套项目内容与示例资产。
按任务阅读
- 先理解 Registry、SettingId、Accessor、Provider 和 Apply/Cancel 生命周期,再选择 Data Asset 或 C++/Blueprint Provider。
- 选择 Common Provider 前,确定哪些偏好由 GGS 负责存储,哪些值需要由项目系统实际应用。
- 使用设置菜单时单独接入
GenericSettingsSystemUI,并按项目 UI 结构创建 Widget。
深入阅读:
- 设置模型与 Provider
- 内置 Provider 与项目配置
- 设置菜单 UI 接入