斯坦福UE4 + C++课学习记录 13:UMG-血量条

一、创建血量属性

  1. Unreal Motion Graphics (UMG)是 UE中用于创建用户界面 (UI) 的工具。它可以实现如下复杂功能:
    (1)动画:UMG 支持为控件添加动画。可以在 Widget Blueprint中创建动画,并在蓝图脚本中控制动画的播放。
    (2)绑定数据:可以将控件的属性绑定到变量或函数,实现动态更新 UI。比如本节中,将进度条的值绑定到角色的健康值。
    (3)事件处理:UMG 提供了丰富的事件处理功能。可以为按钮点击、鼠标悬停等事件添加处理函数,实现交互逻辑。
    (4)自定义控件:可以创建自定义的Widge类,封装复杂的 UI 逻辑,并在其他地方复用。
  2. UMGHUD,在UE4中的HUD主要是指
    (1)UE3那里继承来的Head-Up Display功能,在UE4中主要是用来Debug
    (2)向画布上添加图形图元的功能,表示文字的功能,还有简单的HitBox处理,用来检测鼠标等
    但是由于这些功能UMG都可以干,所以UE4的HUD功能也不是需要一定要掌握了
  3. UMG是对Slate进行了扩展方便在游戏中使用的框架,Slate是不依靠某个平台的UI框架,UE4的Editor和游戏中的UI都是使用Slate构建的。
    (1)继承了UObject使得Blueprint也可以方便使用
    (2)方便在UE4的Editor上确认渲染结果
    (3)简单的制作UI动画
  4. Widget 层次结构
  • UMG 的WidgetBlueprintSlate控件的结合。每个UMG Widget都有一个对应的Slate Widget。UMG 通过将高层次的蓝图控件映射到Slate控件来实现 UI。
  • UUserWidget:UMG 中所有Widget的基类。
  • SUserWidget:与UUserWidget对应的Slate控件。
  1. 事件驱动系统
  • UMG 和 Slate 使用事件驱动系统来处理用户输入事件。常见的事件包括:
    ①点击事件:如按钮的点击事件。
    ②悬停事件:鼠标悬停在控件上时触发的事件。
    ③键盘事件:处理键盘输入的事件。
  • 事件的处理依赖于DelegateBinding系统。UMG 中的事件通常是通过BlueprintC++中的Delegate绑定来处理的。
  1. 数据绑定属性系统
  • UMG 支持将控件的属性绑定到数据源。数据绑定使得 UI 能够自动更新,以反映数据的变化。常见的数据绑定机制包括:
    Property Binding:通过 UMG 的绑定功能,将控件属性绑定到类的属性或函数。
    Delegate Binding:通过 Delegate 绑定,处理属性变化时的自定义逻辑。
  1. 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 ( 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值