问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何优化UGUI的ScrollRect2

发布网友 发布时间:2023-10-08 15:32

我来回答

2个回答

热心网友 时间:2024-11-19 05:48

1. 判定cell大小
LoopScrollRect要解决的核心问题是:如何计算每个元素的大小。这里我使用了Content Size Fitter配合Layout Element来控制每个cell的长宽,因此对于GridLayout直接取高度,否则取Preferred Height。需要注意的是,除了元素本身的大小之外,我们还要将padding考虑进去。

这个其实也是最核心的一个地方:在能够准确计算格子大小的基础上,后续工作就好实现了。

2. 如何优雅的增删元素
对于每个ScrollRect,其实只需要考虑在头部和尾部是否需要增加或者删除元素。在这里以头部的各种情况为例进行解释,因为在正向滑动情况下,必须保证在修改元素之后整个ScrollRect内容显示一致不跳变;这些情况比尾部处理会麻烦一些。

NewItemAtStart函数实现了在头部增加一个(或一行,针对GridLayout)元素,并返回这些元素的高度;DeleteItemAtStart代表删除头部的一个元素。需要注意的是,在修改头部元素之后要及时修改content的anchoredPosition,这样才能保证整个内容区域不会因为多了或者少了一行而产生跳变。

3. 何时需要增删元素
这里需要有两个概念viewBounds和contentBounds:前者是指ScrollRect本身的大小,一般也对应Mask;后者是指ScrollRect里所有cell组成的内容部分的大小。在这个基础上就简单了:如果contentBounds的最上面比viewBounds的最上面要低,那么尝试在顶部增加元素;如果contentBounds的最上面比viewBounds的最上面高很多,那么尝试删除元素。

4. 对象池交互
在新建cell和销毁cell的时候,使用对象池来避免内存碎片;同时这里使用了SendMessage来向每个cell发送必须的信息,保证数据的正确性。

5. 滚动条相关

这块我其实是估算的,根据当前的长度和当前元素个数/总个数按照比例缩放,这个在所有cell大小一致的情况下是没有问题的;但是如果大小不一致我就无法得到精确结果,所以会产生一定抖动。我暂时没有更好办法,因为得到的信息就是不够用。

热心网友 时间:2024-11-19 05:49

UGUI的ScrollRect在加载太多物体的时候,第一次弹出界面会非常卡顿,而且不在界面里的内容依然会参与绘制,导致毫无意义的浪费。笔者对此进行了一番研究
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 ugui scrollrect 怎么左对齐 unity scroll rect的速度怎么调整 办信用卡那些银行可以当天拿卡2 ugui 怎么让scrollrect 停止移动 unity3d UGUI怎么获取ScrollRect到组件2 工商银行信用卡审批过了要多久能拿卡70 如何优化UGUI的ScrollRect1 哪位网友有这个图片的原图?谢谢! 双卡手机如何注册两个?114 我的世界篝火怎么弄153 如何快速用土豆做出土豆粉1 自己家想把土豆做成土豆粉要怎么做 在线视频如何下载MP3格式1 高中音乐爱好社的社团建立申请书怎么写?3 中控S20考勤机删除部分内过期数据后还是显示已达到最大容量。... 怎么下载视频(MP3格式的) 用英语介绍西樵山 急速的反义词极速1 急求西樵山影视城作文,300字以上就好!急求急求呐 如何修改自己的千牛账号名称?45 恩格斯说:“世界的真正统一性在于它的物质性。”下列能够... 哈尔滨美度鉴定中心在哪 我应该买什么好吃给爸妈吃呢?1 骑摩托车没戴头盔交警让写保证书和检讨书,求哪位大神帮写个 双通道网络加速不开数据,只连WiFi会怎样?6 那个网址上下载的视频直接是MP3格式的?3 打开手机双通道网络加速是不是要把数据和WiFi同时开启?2 求下载网页视频中MP3的方法或者工具10 为什么双通道网络加速开了跟没开一样? 可免费下载歌曲和视频的网站.5 请查收可以对老师说吗1 在光遇里女朋友在遇镜里说别跟我什么意思? 怎样说让老师查收作业情商高的说法高情商的说法?4 为什么光遇只能别人拉着你走你也拉不了别人? 给老师提交东西的时候说什么话比较合适呢?11 电脑虚拟内存设置多少合适,是不是越大越好 8G内存 需要多开安卓模拟器,目前测试开6个还好 开到6个以... 双卡双待手机能注册两个吗?怎么注册第二个?706 64位 4G内存,怎么设置虚拟内存 为什么内存够模拟器还是提示不足,虚拟内存都调到18000MB...