UE5 WidgetBluePrint蓝图控件渲染流程解析

一、控件蓝图Widget BluePrint

1.什么是控件蓝图?

控件蓝图(Widget BluePrint)是负责Widget的,即UMG界面的UI设计。一般命名缩写为WBP_xxx。
在项目中我们时常需要创建标签,窗口以及各种可视化UI界面。这时就需要通过控件蓝图将对应的可视化界面制作出来,放到场景中,并实现对应的交互功能。

2.创建控件蓝图

点击空白处右键->用户界面->控件蓝图 既可以创建并制作需要的UMG界面
在这里插入图片描述

3.控件蓝图相关参数解析

在控件蓝图中可以添加各种各样的控件,而这些控件的渲染顺序由ZOrder决定。
在这里插入图片描述

ZOrder的值越高,则越靠后渲染,即将显示在顶部。需要注意的是,ZOrder只会影响当前控件蓝图中控件的渲染顺序,不同控件蓝图中的ZOrder不会互相影响。
在这里插入图片描述
在这里插入图片描述

可以注意的是,当ZOrder的值相同时,布局排在下面的会渲染在上方。可以理解为,渲染蓝图控件时,由上到下渲染,渲染顺序越靠后,则渲染在顶部。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.将控件蓝图添加到场景中

创建好的控件蓝图可以通过两种方式添加到场景中。

通过create widget->add to viewport

一般在需要全局存在且布局格式一定时,会采用这种方法在初始化场景时进行界面的创建。因此需要在界面设计时,就避免按钮的重叠。
在这里插入图片描述

Add to viewport默认的ZOrder为0。
当不修改ZOrder时,创建的UMG界面会根据添加到视口(Add to Viewport)的先后顺序进行渲染,后添加的会渲染在前一个窗口的上方
当修改了ZOrder后,则会根据ZOrder的进行渲染优先级的排序。ZOrder数字越高,控件所处的层级越高,即渲染在上方。

附加到actor中,在actor中添加widget component组件。

一般在不同位置生成,可以控制选择生成为场景控件还是屏幕控件。
可以直接将控件放置到需要的场景位置中,
当为屏幕控件时,需要注意不同控件之间的层级关系,避免形成遮挡,文章的第二部分中有相应的解析。

二、Widget Component

1.在Actor中添加控件蓝图

在这里插入图片描述

在组件->添加 中搜索widget就会出现widgetcomponent,将其添加到actor即可。

2.控件渲染顺序

在actor中的控件蓝图可以分为两大类,一种为场景控件world,一种为屏幕控件screen。
由下图中可以看到,当选择world时,控件在场景中被渲染为网格体,能够被场景中其他网格体遮挡。且窗口的大小与人物的距有关。此时的控件蓝图无法简单的通过鼠标点击button实现对应的事件。
选择space时,控件在屏幕中渲染,完全在场景外,不会被其他的网格体遮挡,且能够以固定的大小显示在屏幕上。此时的控件蓝图可以直接通过鼠标点击实现对应的button绑定事件。
在这里插入图片描述

不同widget component的渲染顺序:
ZOrder的值越高,则越靠后渲染,即将显示在顶部。同时需要修改SharedLayerName的名字。一个ZOrder图层对应一个SharedLayerName。
在这里插入图片描述

举例:
大地图的图层名为BigMap,对应的ZOrder为-99.
小地图的图层名为MiniMap,对应的ZOrder为-100.
在这里插入图片描述
在这里插入图片描述

即小地图的Layer ZOrder小于大地图的Layer ZOrder,大地图渲染在了小地图的上面。
在这里插入图片描述

将小地图的Layer ZOrder设为-98时,即小地图的Layer ZOrder大于大地图的Layer ZOrder,则小地图显示到了大地图上面。
在这里插入图片描述

且如图所示,Layer ZOrder只在新图层首次创建时才存在影响,之后添加到相同图层使用最初定义的ZOrder。
在这里插入图片描述

即第一次将BigMap的Layer ZOrder设为-99,那么后面相同命名(BigMap)的图层,即使将Layer ZOrder设为了-100,控件蓝图也还是会添加到最初的ZOrder为-99的图层。
在这里插入图片描述

如上图所示,此时BigMap的Layer ZOrder 为 -99,MiniMap的Layer ZOrder 为 -100.
后创建的绿色窗口加入了MiniMap的图层,但是Layer ZOrder 设为 -98,但是仍然显示在了大地图下方,说明它此时的Layer ZOrder还是为-100,即图层首次创建时的ZOrder。
因此需要注意:在screen模式下创建的控件蓝图需要做好图层分配,避免出现冲突。

3.图标设置近大远小效果

推荐:WidgetComponent->GetWidegt->SetRenderScale(设置渲染范围)
通过SetRenderScale(设置渲染范围)可以动态设置WidgetComponent中Widget的缩放比例,会自动缩放/放大一整个标签的效果。即不需要动态控制UMG里图片和文字的大小,非常的便利。
在这里插入图片描述

参考文档:【UE5】WidgetComponent的进阶使用

WidgetComponent->SetDrawSize(设置绘制大小)
通过SetDrawSize(设置绘制大小)可以设置WidgetComponent的绘制大小,缺点是并不会自动缩放WidgetComponent中widget的图片/文字/按钮的大小,需要在对应的UMG中也同步修改相关内容的大小。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值