UI 拓展系统概述 🖥️
1️⃣ 概述
UI往往制作起来很麻烦,尤其是HUD,通常会有许多元素需要展示。
随着游戏系统变得越来越复杂,HUD也会逐渐臃肿,耦合大量内容。
很多UI元素会根据游戏情况动态隐藏/显示不同的Widget内容。
而 UI 拓展系统则可以帮助你:
- 在HUD上布置一堆以GameplayTag标记的占位符(拓展点)
- 通过游戏代码动态地将不同的UIWidget注入不同的占位符(加入UI到拓展点),以及从某个拓展点移除,实现模块化管理和性能优化。
2️⃣ 用法
- 放置拓展点
找到你需要在游戏运行时进行拓展的Widget(一般是较大的UI元素,如HUD、库存面板等),在合适的地方添加 GUIS_GameUIExtensionPointWidget
并配置好其位置、大小等。
同时你还需要为其关联GameplayTag。

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

- 从拓展点取消注册
当你注册Widget时,将返回值(ExtensionHandle)保存在某个地方。
当你不需要展示该UI时,通过调用上面的API,并传入 ExtensionHandle
,即可取消注册,从而移除该Widget。

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

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


战斗系统


4️⃣ 高级用法
🔜 TODO.