最近忙于性能优化,深切体会到二八法则真是指导高(tou)效(lan)工作的有力武器。这个礼拜花了几天解决了一个实际问题:UGUI的ScrollRect加载太多物体的时候,第一次弹出界面会非常卡顿,而且不在界面里的内容依然会参与绘制(毫无意义的浪费…)。
ChangeLog
- v1.03 终于支持了ScrollBar,支持直接创建
- v1.02 Bug Fixes,无尽模式
- v1.01 重构了好几遍,基本算重写了份…优化了拖动手感和回收部分的计算,增加了反方向滑动支持。升级至Unity 5.2的UGUI API
- v1.0 这两天基于网上找的一份InfinityScroll代码,把这个功能做了。在加载时间和Draw Call上都提升显著,而且滑动的时候也没有卡顿
每个元素知道自己的序号,可以根据需要修改自己的内容、大小等信息。
此外支持了ScrollBar,支持横向、纵向及正反向。
在关闭Mask后可以看到,只有当需要的时候才动态实例化元素,使用完后回收。
介绍
最原始版本的代码是@ivomarel的InfinityScroll。我改到后来,基本和原始版没啥相同的了…
- 原代码使用了
sizeDelta
作为大小,但是这个在锚点不重合情况下是不成立的 - 支持了GridLayout
- 在启动时检查锚点和轴心,方便使用
- 修复了原代码在往前拖拽会卡顿的问题
- 优化代码,提升性能
- 支持反向滑动
- 支持ScrollBar (在无尽模式下不起作用; 如果元素大小不一致会出现滚动条瑕疵)