ScrollView 优化

使用Cocos Creator开发游戏时,经常会用到ScrollView,来做列表显示。但是经常会碰到一系列的问题,比如:

  1. 加载显示非常多(比如200+个)子item时,刚开始有明显的卡顿。
  2. DrawCall会很高。

为此我尝试写了份自己优化的ScrollView,适用于ScrollView的content的Layout Type为Vertical,Horizontal,Grid,不能为None。 要配合SuperListItem一起使用,Item的预制体绑定的脚本要继承SuperListItem。具体可以看Demo

主要的优化点有:

  1. 分帧加载子Item,以解决加载大量item时的卡顿现象。
  2. 对众多子item做DrawCall优化,有效降低DrawCall。
  3. 可以滚动到指定item(通过索引去指定Item),使指定item显示在ScrollView视图中间。
  4. 使用简单,哈哈哈···,只需要外部调用setData就可以了

git地址为
https://gitee.com/zzhcodes/superscrollview

后续还会继续优化,欢迎大佬们拍砖~

2赞
  1. 如果item过多,加载完之前,拖动是不是会卡
  2. 如果item本身有透明度,是不是会有影响

我做了搞自适应高度item的循环滚动scrollview,只创建可视范围内的item,移出可视范围和自动回收起来循环利用

自适应item意思是item可以是任何可视对象,item高度不限制

可以可以,后续会优化

2是会有影响,根据大佬们的反馈,后续会继续优化。第一个版本还不够完善

item循环复用,拖动的时候更新item数据,这种的性能不是会更好吗

我这个是laya版本的,,仅供参考哈,
目前的缺点是拖动滚动没有做加速度,只是固定速度的,需要修改下。
LoopScrollView.rar (3.0 KB)

主要是看看思路哈哈哈,

大佬666

一点也不66

问一下,怎么开启 滚动出边界的问题?

大佬我没看出来分帧加载和普通加载的区别啊~什么情况

这个dc优化大致看了下,就是超过视野的item隐藏起来吗,scrollview优化除了dc的问题,还有item数量的问题吧。
代码中明明有
// @property({
// tooltip: ‘最多可以显示多少个Item’,
// })
visibleNum: number = 7;
这个参数,但是没有使用的感觉

互相参考下吧,之后会研究下你的代码,瞅一瞅,看看有没有可以吸取的想法
我的scrollview:
https://gitee.com/kexilu/ScrollView

:grinning:好的谢谢