一、创建血量属性
Unreal Motion Graphics (UMG)是 UE中用于创建用户界面 (UI) 的工具。它可以实现如下复杂功能:
(1)动画:UMG 支持为控件添加动画。可以在Widget Blueprint中创建动画,并在蓝图脚本中控制动画的播放。
(2)绑定数据:可以将控件的属性绑定到变量或函数,实现动态更新 UI。比如本节中,将进度条的值绑定到角色的健康值。
(3)事件处理:UMG 提供了丰富的事件处理功能。可以为按钮点击、鼠标悬停等事件添加处理函数,实现交互逻辑。
(4)自定义控件:可以创建自定义的Widge类,封装复杂的 UI 逻辑,并在其他地方复用。UMG和HUD,在UE4中的HUD主要是指
(1)UE3那里继承来的Head-Up Display功能,在UE4中主要是用来Debug
(2)向画布上添加图形图元的功能,表示文字的功能,还有简单的HitBox处理,用来检测鼠标等
但是由于这些功能UMG都可以干,所以UE4的HUD功能也不是需要一定要掌握了UMG是对Slate进行了扩展方便在游戏中使用的框架,Slate是不依靠某个平台的UI框架,UE4的Editor和游戏中的UI都是使用Slate构建的。
(1)继承了UObject使得Blueprint也可以方便使用
(2)方便在UE4的Editor上确认渲染结果
(3)简单的制作UI动画- Widget 层次结构:
- UMG 的
Widget是Blueprint和Slate控件的结合。每个UMG Widget都有一个对应的Slate Widget。UMG 通过将高层次的蓝图控件映射到Slate控件来实现 UI。 UUserWidget:UMG 中所有Widget的基类。SUserWidget:与UUserWidget对应的Slate控件。
- 事件驱动系统:
- UMG 和 Slate 使用事件驱动系统来处理用户输入事件。常见的事件包括:
①点击事件:如按钮的点击事件。
②悬停事件:鼠标悬停在控件上时触发的事件。
③键盘事件:处理键盘输入的事件。 - 事件的处理依赖于
Delegate和Binding系统。UMG 中的事件通常是通过Blueprint或C++中的Delegate绑定来处理的。
- 数据绑定和属性系统:
- UMG 支持将控件的属性绑定到数据源。数据绑定使得 UI 能够自动更新,以反映数据的变化。常见的数据绑定机制包括:
①Property Binding:通过 UMG 的绑定功能,将控件属性绑定到类的属性或函数。
②Delegate Binding:通过 Delegate 绑定,处理属性变化时的自定义逻辑。
UMG的三种控件:
UWidget: 所有 UMG 控件的公共基类,不提供增加子节点功能UPanelWidget: 提供了增加子节点功能,可以有多个子节点UContentWidget: 继承于UPanelWidget,是UPanelWidget的一种特例,只能有一个子节点
(1)不能有子节点的控件:这个类别的控件的公共基类都是UWidget,每个 UMG 控件,都持有一个 Slate控件的智能指针。
(2)可以增加子节点的控件:
- 有一个子节点的控件继承的父类依次是
UComponentWidget->UPanelWidget,父类UComponentWidget构造函数中设置了不允许多个孩子标记位:(源码如下)
UContentWidget::UContentWidget(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
bCanHaveMultipleChildren = false;
}
- 公共基类
UPanelWidget定义了AddChild函数,可以增加对应的子节点:(源码如下)
UPanelSlot* UPanelWidget::AddChild(UWidget* Content)
{
if ( Content == nullptr )
{
return nullptr; //表示无法添加空控件
}
//检查是否可以有多个子控件
if ( !bCanHaveMultipleChildren && GetChildrenCount()</


8452

被折叠的 条评论
为什么被折叠?



