Widget工厂(WidgetFactory)
UE中原始的TileView和ListView只能选择一种WidgetClass来展示UI数据对象,但实际游戏中,UI数据对象可能会很复杂,比如一个库存系统中的道具。
因此GUIS有拓展版本的GUIS_TileView
和GUIS_ListView
,它们都可以设置一个WidgetFactory。
WidgetFactory的作用是:根据传入的数据对象,动态选择合适的Widget来展示数据对象。
比如:我有一个Factory,根据道具的标签或者类型,动态选择不同的WidgetClass
去呈现不同类型的道具,减少了单个Widget的实现复杂度。
细节构建器(DetailsSectionBuilder)
任何需要通过UI呈现的数据对象,它可以很简单,也可以很复杂。而DetailsSectionBuilder是为复杂的对象准备的。
而SectionBuidler的作用就是:根据传入的数据对象,动态选择合适的1~多个DetailsSection
Widget以模块化
的方式展示一个数据对象的各部分的信息。
比如一把武器,它除了基本信息,可能还有增益信息,或者技能附加信息,那么可以用不同的DetailsSection去展示该武器的不同部分的信息。
无需写一坨UI试图把所有东西都展示出来。
UIAction
通常,你在UI上选择一个对象时,会有一系列针对该对象的可用动作,比如销毁,丢弃等,这些称之为UIAction。
创建UIAction
UIActionFactory
UIActionFactory是一个数据资产,它包含多个UIActionDefinition,每一个Definition中包含多个实际的可用UIAction。
比如下图的Factory,它包含一个库存道具常见的操作。

组件参考

按钮
蓝图:WB_GUI_Button
用例:
- 对话框按钮
- 底部操作栏按钮
选项卡按钮
蓝图:WB_GGF_TabButton
一个默认实现了GGF_TabButtonInterface的按钮,与WB_GGF_HorizontalTabList配合使用。
用例:
- 游戏菜单上的顶部导航按钮。
- 库存面板上的道具分类按钮。
细节视图
DetailView是一个拥有垂直布局“Box_DetailSections”的Widget,会与一个UObject形式的Item关联(此Item可以是任意内容,一个角色,一个库存道具等等),View可以配置一个数据资产“SectionsBuilder”动态生成一组“DetailSection”Widget来展示所关联Item的各种数据。每一个DetailsSection是一个Widget,会按照Builder中指定的顺序,分别展示Item的一部分数据。
这种模块化的设置允许你通过数据资产的方式、可以更方便地针对某一种数据,使用不同的Widget去展示。
用例:
库存道具展示:假设我有一个库存道具,包含道具名称和描述,同时还有一堆属性。那么可以用一个ItemDetailView去展示这个道具,这个View包含两个部分,分别是“Section_BaseInfo”和“Section_Stats”两个Widget。
角色信息展示:假设我有一个角色,我可以用Section_BaseInfo去展示角色的名字和背景故事,用Section_Skills去展示当前角色所拥有的技能。
提示:
Item通常会是一个ListView中的ListEntryWidget所展示的对象,但也可以不是。
磁块视图(GUIS_TileView)
列表视图(GUIS_ListView)
水平选项卡列表
蓝图:WB_GGF_HorizontalTabList
这是一个可复用的选项卡组件,允许你非常方便地设置导航菜单,它与WB_GGF_TabButton配合使用。

选项卡定义参数:
参数名 | 描述 |
TabID | 每一个选项卡应该有一个唯一的ID。 |
TabText | 该选项卡按钮所展示的文字。 |
IconBrush | 会在按钮文字前展示的图标。 |
TabButtonType | 选项卡按钮的类型,任何实现了GGF_TabButtonInterface的CommonButtonBase都可以被选择。 |
TabContentType | 可选择任意CommonUserWidget,会伴随选项卡按钮的选择而自动创建。 |
上图是该组件的主要值得注意的参数,你可以在TabDefinitions数组上添加多个选项卡定义,每一个选项卡定义可以填写选项卡按钮的具体Widget,每个按钮的文字,图标,以及选项卡内容。
在BindSwitcher出选择一个Switcher与该组件关联,即可实现点击按钮,Switcher自动切换到选项卡按钮所关联的选项卡内容。