内容概括
对于UMG,之前我没有相关的经验,今天学习了下其基础知识。因此记录了一些自己感兴趣的内容。
本篇主要参考的教程是:UMG UI设计器快速入门 | 虚幻引擎文档。
但是我排除了一些关联度不高的、过于基础的、重复的内容。增添了一些自己额外观察的内容。
1. 一个UMG资源代表什么?
一个UMG资源代表一个控件蓝图资源。
All User Interface elements (HUD, Menus, etc.) will be created and housed inside a Widget Blueprint. The Widget Blueprint allows you to visually layout your UI elements as well as provides scripted functionality for those elements.
所有用户界面元素(HUD、菜单等)会被创建并放置在控件蓝图中。控件蓝图允许您以可视化方式对UI元素进行布局,并为这些元素提供脚本化功能。
建立一个UMG蓝图也意味着创建了一个继承自UUserWidget
的子类。
关于 UObject、资源、蓝图、蓝图所创建的类这几个概念顺便梳理一下:
UObject
是虚幻对象系统中所有对象的基类。- 所有能在内容浏览器中看到的东西都是一个 资源(Asset)。每个资源都有其所属于的
类
,而这个类
继承于UObject
,是它的子类。而一个资源算是这个类
的一个实例。当鼠标悬停在资源上时,其所属于的类
显示在最上面和资源名同行:- 蓝图也是一种资源,它的
类
是UBlueprint
。但是蓝图是一种特殊的资源,我指的是:它本身创建了一种新的类
而不借助C++。它所创建的类的父类可以在Parent Class中看到:
UMG这个蓝图资源的类
是UWidgetBlueprint
。其继承关系如下:
而每个UMG的蓝图资源所创建的类
继承自UUserWidget
。其继承关系如下:
2. UMG该如何编辑?
当打开一个UMG资源时,会出现控件蓝图编辑器,相关内容将在此编辑。
官方文档中有对其布局进行简单的介绍:
编号 | 窗口名 | 描述 |
---|---|---|
1 | 菜单栏 | 通用的菜单栏 |
2 | 工具栏 | 其中包含常规蓝图编辑器的一系列通用功能,比如编译、保存和播放。 |
3 | 模式 | 在 “Designer”(设计界面用) 和 “Graph”(指定逻辑用) 模式之间切换。 |
4 | Palette | 控件列表,您可以将其中的控件拖放到视觉设计器(或层级窗口)中。它会显示继承自 UWidget 的所有类。 |
5 | 层级窗口 | 显示用户控件的父级结构。您还可以将控件拖动到此窗口。 |
6 | 视觉设计器 | 这是布局的视觉呈现。在此窗口中可以操纵已拖动到视觉设计器中的控件。 |
7 | 细节面板 | 显示控件的细节面板 |
8 | 动画 | 这是 UMG 的动画轨,可以用于设置控件的关键帧动画。 |
在本例中,主要进行的操作就是:
- 在左边,将Palette中的控件拖到层级窗口中。
- 在右边,细节面板中指定控件的一系列属性
- 在中间,预览控件的布局是否符合预期,如不符合预期则对其调整(当然,调整的数值也可以在细节面板中看到)
3. UMG中的数据如何更新?
在本例中:
首先,在UMG的 Graph 模式下,在游戏一开始就获取了玩家对象:
然后,就可以将控件中的一些属性绑定到玩家对象的属性上了:
另外,你也可以点击 Create Binding 来对绑定创建一些自定义的逻辑。它将创建一个函数,你可以在函数中将逻辑放进去。
4. 如何将UMG显示出来
在本例中:
是在人物角色蓝图中,在开始游戏时插入了相关逻辑:
其中:
- “Create XXX Widget” 将这个UMG蓝图资源给实例化。
- SET 节点只是记录下创建出的UMG,方便之后调用。
- 最后的 Add to Viewport 节点将UMG显示在了玩家视口中。