UI拓展系统

UI 拓展系统概述 🖥️

1️⃣ 概述

UI往往制作起来很麻烦,尤其是HUD,通常会有许多元素需要展示。

随着游戏系统变得越来越复杂,HUD也会逐渐臃肿,耦合大量内容。

很多UI元素会根据游戏情况动态隐藏/显示不同的Widget内容。

而 UI 拓展系统则可以帮助你:

  • 在HUD上布置一堆以GameplayTag标记的占位符(拓展点)
  • 通过游戏代码动态地将不同的UIWidget注入不同的占位符(加入UI到拓展点),以及从某个拓展点移除,实现模块化管理和性能优化。

2️⃣ 用法

  1. 放置拓展点

找到你需要在游戏运行时进行拓展的Widget(一般是较大的UI元素,如HUD、库存面板等),在合适的地方添加 GUIS_GameUIExtensionPointWidget 并配置好其位置、大小等。

同时你还需要为其关联GameplayTag。

UI拓展系统.001


  1. 动态注册Widget到拓展点

在合适的游戏时机,调用上面的API将UI注入到拓展点。例如:附近有可以交互的物体时,才会动态注入 “交互盒” widget。

UI拓展系统.002
  1. 从拓展点取消注册

当你注册Widget时,将返回值(ExtensionHandle)保存在某个地方。

当你不需要展示该UI时,通过调用上面的API,并传入 ExtensionHandle,即可取消注册,从而移除该Widget。

UI拓展系统.003



3️⃣ 案例

下图是我的HUD,它空空如也,什么也没有,只有几个占位符。

UI拓展系统.004

然后我的不同的系统可以共享这同一个HUD布局,但却注入不同的内容:

运动系统

UI拓展系统.005
UI拓展系统.006

战斗系统

UI拓展系统.007-2
UI拓展系统.007


4️⃣ 高级用法

🔜 TODO.