[UE4]RetainerBox,控制UI更新频率,把渲染后的UI当成Texture

本文详细介绍了在Unreal Engine 4 (UE4)中如何利用RetainerBox控制UI更新频率以优化性能,以及如何将渲染后的UI转换为纹理并应用各种特效,如渐变、移动和缩放等。

RetainerBox是一个容器,只会影响其容器内的UI,RetainerBox的作用:

一、控制UI更新频率(可能是为有优化性能)

  1、在UserWidget中添加Retainer Box容器,并在容器内添加一个名为TextBlock_0的TextBlock。

    

  2、声明一个名为Counter的变量,在Event Tick事件(每一帧都会被调用)中Counter自加一,并赋值给TextBlock_0

    

  3、运行游戏,会看到数字以极快的速度更新一次。(一般情况下游戏是每秒60帧,一秒会更新60次画面,每秒调用Event Tick事件,非常耗费资源,因此Event Tick事件不适合做特别耗费资源的逻辑)

    

  4、RetainerBox的Pase和Pase Count控制更新速度。Pase Count:每隔多少帧更新(绘制)一下其容器内的UI

    Pase=0,Pase Count=1,在60HZ(HZ刷新率,每秒更新多少帧。UE4默认是60HZ)游戏中,RetainerBox容器内的UI每秒更新60次;

    Pase=0,Pase Count=2,在60HZ游戏中,RetainerBox容器内的UI每秒更新30次;

    

  5、把Pase Count改成60,Phase=0保持不变。在60HZ的游戏则会看到TextBlock_0每1秒才更新一下

    

 二、把渲染后的UI当成Texture,放入材质中,加工后(各种特效,比如:渐变、移动、缩放等),再显示

  1、新建一个名为M_TestRetainer的材质,Material Domain改成User Interface,添加一个命名为Texture(需要跟UI的RetainerBox容器的Texture Parameter值一致)的TextureSampleParameter2D节点

     

  2、UI中把RetainerBox_0的Effect Material改成M_TestRetainer,Texture Parameter材质参数保持Texture不变(需要跟TextureSampleParameter2D节点名称一致)

    

   3、运行游戏,画面效果如图所示

    

  4、下面让材质支持透明通道,并添加线性渐变特效。在M_TestRetainer材质中,Blend Mode改成Translucent,将Param2D节点和M_TestRetainer的透明通道相连接。

    

   5、运行游戏看效果:支持透明通道,并且有线性渐变效果。

    

  6、如果要改成渐变效果从下往上,可以添加一个“1-x(OneMinus)”节点,也就是1减去左边输入的参数值,得到的结果从右边输出  

    

  7、运行游戏,渐变效果变成从下往上了。

    

  8、如果要从左到右渐变,则使用LinearGradient的UGradient节点

     

  9、同样的,使用“1-x(OneMinus)”节点,可以改成渐变从右到左。

      

   10、使用Panner使材质实现翻滚动画

      

 

 

 

 

 

 

 

    

 

转载于:https://www.cnblogs.com/timy/p/10042873.html

### 在Unreal Engine中单独渲染UI的方法 在Unreal Engine中,单独渲染UI可以通过多种方式实现,主要依赖于Canvas Panel Widget和Post Process Materials等功能。以下是详细的说明: #### 使用Canvas Panel Widget独立渲染UI Canvas Panel 是一种特殊的Widget容器,允许开发者自由放置子Widget并调整其位置、大小和其他属性。当需要单独渲染UI时,可以利用Canvas的特性将其与其他游戏元素分离。 - 创建一个新的Blueprint类继承自`UserWidget`。 - 在该蓝图中添加一个Canvas Panel作为根节点,并在其内部布置所需的UI组件[^2]。 为了确保UI层不被其他Actor遮挡或者影响底层3D场景的表现,需设置以下参数: - **Z Order**: 调整Canvas内的各个UI元素顺序以控制它们之间的堆叠关系。 - **Render Transform**: 应用缩放和平移变换使UI适应不同分辨率屏幕。 - **Visibility Settings**: 设置特定条件下隐藏或显示整个UI面板[^4]。 #### 利用Post Process Material增强效果 对于更复杂的视觉需求,比如模糊背景突出前景菜单等情况,则需要用到后期处理材质(Post Process Material)配合Scene Texture节点完成操作。 具体步骤如下: 1. 新建Material资源命名为M_PostProcess_UIBlur; 2. 编辑此材料,在表达式列表里找到'SceneTexture'项拖拽至工作区; 3. 连接'SceneTexture'输出端口到最终颜色输入端口中去; 4. 添加高斯模糊(Gaussian Blur)滤镜作用于上述连接线上面形成渐变过渡区域[^1]; 最后一步就是把生成好的Post Process Material绑定给目标Camera Component即可生效。 ```cpp // 示例C++代码片段展示如何动态加载指定名称的材质实例 UMaterialInstanceDynamic* DynamicMatInst = UMaterialInstanceDynamic::Create(LoadObject<UMaterial>(nullptr, TEXT("/Game/UI/Mats/M_PostProcess_UIBlur")), this); if (DynamicMatInst != nullptr){ MyCameraComponent->SetPostProcessBlend(DynamicMatInst, 1.f); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值