UE4_EditorUtilityWidget上读取到大量数据优化方法

经过一段时间的使用,创建编辑器UI引起的卡顿主要有以下两方面。

  1. 短时间内大量创建UI,像Vertical Box这种类型的容器,短时间创建几百个子容器不会造成卡顿,但是如果创建成千上万,就会引起卡顿。
  2. 从其他地方的数据接口获取了累计上万的数据,存放到了UI上。往往是根据获取到数据从而创建UI,造成双重卡顿。数据量大,创建的UI多。

UI创建问题

如果不需要双滚轮的效果,可以使用TreeViewListView这样容器,它们在根据几万条数据创建大量UI时,做了一定的UI上的优化,优化原理,类似分页。
虽然有几万条数据,但是它们并没有创建大量UI,只是创建了稍稍超过铺满一页数量的UI,通过换页的方式来动态更换数据。
因此导致的问题就是,如果UI上让第2行的数据UI高亮,在不断往下滑动或者滚动UI的时候,会发现每隔一段数据量的行数,就会出现一行高亮的UI。 原因就是它只是创建了少量的UI,通过更换数据的方式,去达到视觉上创建大量UI的目的。
如果想解决选中某一行高亮的bug,可以在创建子项的时候,传递一个UUID,在EntryWidget中动态去判断是否是你传入的这个UUID来更改是否要在某一行上进行高亮。什么是EntryWidget这个去学习一下ListView或者TreeView就知道了。

在这里插入图片描述

「双滚轮UI」

在这里插入图片描述

「某一行数据UI高亮」

数据量大问题

我的数据来源是从继承了引擎的UEditorSubsystem或者UEngineSubsystem的类中。关于子系统的使用可以参考如下链接

子系统(SubSystem)应用案例

c++ 截图如下:
在这里插入图片描述

蓝图如下:
在这里插入图片描述

在该方法中,并没有把所有的数据进行获取,而只是拿到了一页的数据,一页的数据大概在100条数据左右。这样子就解决了,一下子获取所有数据造成的卡顿。

最后的最后,如果您觉得这篇文章帮助到您,请资助下这位朋友的粮食,谢谢!

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值