[UE4]RetainerBox,控制UI更新频率,把渲染后的UI当成Texture
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使材质实现翻滚动画

[UE4]RetainerBox,控制UI更新频率,把渲染后的UI当成Texture的更多相关文章
- android开发之在activity中控制另一个activity的UI更新
转自:http://blog.csdn.net/jason0539/article/details/18075293 第一种方法: 遇到一个问题,需要在一个activity中控制另一个acitivit ...
- android线程控制UI更新(Handler 、post()、postDelayed()、postAtTime)
依照以下的理解就是handler与ui线程有一定的关联能够由于更新界面仅仅能在主线程中全部更新界面的地方能够在接受消息的handleMessage那里还有更新界面能够在handler.port(new ...
- 【Cocos2d-Js基础教学(7)界面UI更新方法(会用到第三方类库)】
我们游戏中会遇到很多UI更新的时候,大部分时候我们会remove该节点,再重新绘制的方法来进行UI更新. 但是这种更新效率并不高,这里我推荐大家一个第三方的库,来通过注册更新的方式来对UI进行更新管理 ...
- WPF多线程UI更新——两种方法
WPF多线程UI更新——两种方法 前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对 ...
- oc 多线程UI更新
1.在子线程中是不能进行UI 更新的,而可以更新的结果只是一个幻像:因为子线程代码执行完毕了,又自动进入到了主线程,执行了子线程中的UI更新的函数栈,这中间的时间非常的短,就让大家误以为分线程可以更新 ...
- RxJava2-后台执行耗时操作,实时通知 UI 更新(一)
一.前言 接触RxJava2已经很久了,也看了网上的很多文章,发现基本都是在对RxJava的基本思想介绍之后,再去对各个操作符进行分析,但是看了之后感觉过了不久就忘了. 偶然的机会看到了开源项目 Rx ...
- C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较
使用Task,await,async,异步执行事件(event),不阻塞UI线程和不跨线程执行UI更新 使用Task,await,async 的异步模式 去执行事件(event) 解决不阻塞UI线程和 ...
- WPF多线程UI更新
前言 在WPF中,在使用多线程在后台进行计算限制的异步操作的时候,如果在后台线程中对UI进行了修改,则会出现一个错误:(调用线程无法访问此对象,因为另一个线程拥有该对象.)这是很常见的一个错误,一不小 ...
- runloop事件、UI更新、observer与coranimation
一.触摸事件派发与视图绘制打包 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ __dispatchPreprocessedEve ...
随机推荐
- java 彻底理解 byte char short int float long double
遇到过很多关于 数值类型范围的问题了,在这做一个总结,我们可以从多方面理解不同数值类型的所能表示的数值范围 在这里我们只谈论 java中的数值类型 首先说byte: 这段是摘自jdk中 Byte.ja ...
- 【JVM】java对象
一.对象内存布局 对象在内存中存储可分为3块区域:对象头,实例数据,对齐填充 1.对象头 对象头包含两部分内容. 第一部分:存储对象自身的运行时数据,哈希吗(hashCode),GC分代年龄,锁状态标 ...
- mongodb集群性能优化
mongodb集群性能优化 在前面两篇文章,我们介绍了如何去搭建mongodb集群,这篇文章我们将介绍如何去优化mongodb的各项配置,以达到最优的效果. 警告 不做任何的优化,集群搭建完成之后,使 ...
- getpwnam,getgrnam,getpwent,crypt等函数
[root@bogon code]# cat a.c #include<stdio.h> #include<pwd.h> int main() { struct passwd ...
- Spring定时器corn表达式详解
1.结构 Spring定时器corn表达式详解 2.各字段的含义 字段 允许值 允许的特殊字符 秒 0~59 - * / 分 0~59 - * / 小时 0~23 - * / 日期 1~31 - * ...
- day43 数据库学习egon的博客 索引
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
- 01Hadoop简介
Hadoop思想之源:Google 面对的数据和计算难题 ——大量的网页怎么存储 ——搜索算法 带给我们的关键技术和思想(Google三篇论文) ——GFS(hdfs) ——Map-Reduce —— ...
- What happens to our code? JavaScript 代码是怎样执行的
1. 我们的代码第一步会被parser 语法分析程序分析. 如果没有报错之后 2. 生产SyntaxTree, 我们的代码会转换成machine code 3. 最终 我们的代码会被运行出来. 下面的 ...
- 不同eclipse版本的git库使用
在eclipse 4.4.2 -win32版本下编译好后上传版本: 1.在eclipse 4.4.0 -win64 版本下,编译报 缺少 sevlet.http...库,解决方法 project - ...
- AXI Quad SPI
AXI Quad SPI 信息来源