Generic Game System 1.6
相对 1.5.1 的更新。这一版补上可 Apply / Cancel 的本地玩家设置,并把交互、可激活控件和模态里几个含糊默认收紧。设置菜单是增量:不配就不会自己弹出来。交互技能缺组件、模态缺关闭区绑定、或 C++ 覆写了旧显示名函数时,会直接不激活或编不过。
新增
- 每个本地玩家可以有一份能预览、能保存、能取消的设置。 画面等设备项写到
UGameUserSettings;音频、输入和辅助功能写到该玩家的 Shared SaveGame。未 Apply 就退出菜单会丢弃脏值。 - 常见画面 / 音频 / 输入 / 辅助功能 / 语言不必从零做。 内置 Provider 可蓝图子类化。画面覆盖窗口模式、显示器选择、分辨率、亮度、画质、VSync、帧率和动态分辨率。输入只覆盖设备偏好,不含 Enhanced Input 重绑定。项目要重写 Shared 的
ApplySettings,这些偏好才会作用到自己的音频或后处理。 - 设置屏可以按 CommonUI 方式做列表、详情和层级返回。 提供可激活菜单、条目和 Apply / Cancel。
- 窄屏 HUD 可以把一排控件折成单列。 Lyra 风格响应式面板在视口较窄时堆叠子控件。
- 特效库、交互定义和设置资产可以在内容浏览器里直接新建。 新增
GenericGameSystemEditorFactory。 - Mac 进入全部运行时与编辑器平台。 本版本面向 Unreal Engine 5.8。
变更
- 没有交互组件的 Avatar 不能再激活交互技能。 缺失时拒绝激活并打错误日志,避免技能跑起来却没有候选目标。
- 交互 Gameplay Behavior 每次运行都是新实例。 不再在共享 CDO 上保存单次技能状态。依赖 CDO 缓存的自定义 Behavior 会串单。
- 交互显示名默认实现改用正确的函数名。 只覆写了
GetInteractionDisplayNameText_Implementation的 C++ 子类需要改名,否则编译失败或继续走错误默认。 - Smart Object 查找失败时蓝图拿不到脏指针。 失败路径把输出清空。
InputConfig = Default的界面会继承 CommonUI 父类输入,而不是「不声明输入」。 依赖空 Optional 的旧界面需要显式选 Game / Menu / GameAndMenu。新增视口捕获期间隐藏光标的选项。- 模态可以点空白处关闭。 子类必须绑定
Border_TapToCloseZone;不需要时可关掉该选项。缺绑定的已有蓝图升级后要补。 - 特效与 UI 的 Developer Settings 改名,和其他 Generic 插件对齐。
UGES_ContextEffectsSettings→UGES_DeveloperSettings,UGUIS_GenericUISystemSettings→UGUIS_DeveloperSettings。字段职责未删。
升级说明
设置系统是增量可升,不配就不会出现菜单。交互、模态和旧设置类名是行为收紧或源码不兼容。C++ 旧类名、模态蓝图、交互组件和接口覆写必须核对。不改时交互技能可能不激活,模态可能编不过。
- C++ 或 ini 里写死的旧 Developer Settings 类名改到新类名,并在项目设置里确认原配置还在。
UGUIS_GameModalWidget子类绑定Border_TapToCloseZone;不需要点按关闭就关掉该选项。- Avatar 缺少交互组件时,交互技能不再激活,请把组件挂上。
- 依赖 CDO 共享状态的自定义交互 Behavior 按每次运行新实例来改。
- 把
GetInteractionDisplayNameText_Implementation改成GetInteractionDisplayName_Implementation。 InputConfig = Default的界面会继承父类输入。若旧行为依赖「不声明输入配置」,改为显式选择。- 要用设置菜单:配置
UGSS_DeveloperSettings,通常继承 Common Shared 并重写ApplySettings,再把需要的 Common Provider 放进 Startup Provider Classes。