【Unity】优化UGUI 滚动条ScrollRect(高效复用)

本文介绍了优化Unity UGUI ScrollRect的方法,包括高效复用滚动条,减少界面卡顿和无效绘制。文章详细讲解了细胞大小判定、元素增删时机、对象池交互和滚动条相关细节,并提供了使用示例,如无尽模式的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近忙于性能优化,深切体会到二八法则真是指导高(tou)效(lan)工作的有力武器。这个礼拜花了几天解决了一个实际问题:UGUI的ScrollRect加载太多物体的时候,第一次弹出界面会非常卡顿,而且不在界面里的内容依然会参与绘制(毫无意义的浪费…)。

demo1

ChangeLog

  • v1.03 终于支持了ScrollBar,支持直接创建
  • v1.02 Bug Fixes,无尽模式
  • v1.01 重构了好几遍,基本算重写了份…优化了拖动手感和回收部分的计算,增加了反方向滑动支持。升级至Unity 5.2的UGUI API
  • v1.0 这两天基于网上找的一份InfinityScroll代码,把这个功能做了。在加载时间和Draw Call上都提升显著,而且滑动的时候也没有卡顿

每个元素知道自己的序号,可以根据需要修改自己的内容、大小等信息。

此外支持了ScrollBar,支持横向、纵向及正反向。

demo1

在关闭Mask后可以看到,只有当需要的时候才动态实例化元素,使用完后回收。

demo3

介绍

最原始版本的代码是@ivomarel的InfinityScroll。我改到后来,基本和原始版没啥相同的了…

  • 原代码使用了sizeDelta作为大小,但是这个在锚点不重合情况下是不成立的
  • 支持了GridLayout
  • 在启动时检查锚点和轴心,方便使用
  • 修复了原代码在往前拖拽会卡顿的问题
  • 优化代码,提升性能
  • 支持反向滑动
  • 支持ScrollBar (在无尽模式下不起作用; 如果元素大小不一致会出现滚动条瑕疵)
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值