[toc]

# 问题提出

当一个滚动列表可能出现数十个 item 时,就会出现卡顿,这种前提下就需要实现

不能一次性生成所有的列表元素,只能一次性加载固定的元素,然后修改这些元素的属性值 通过数据驱动的方式进行

即无限滚动列表

# 方案解析

配置一开始的时候使用 Grid Layout Group 组件将每个元素的位置确定下来.
然后关掉 Grid Layout Group 组件来使得可以通过代码来操控子元素的位置。基本思路:
* 先得到最终会生成的元素数量 * 根据每个元素的长宽预设置 UI 组件的大小 (比如将要得到 100 个元素,则宽就是 100_w, 高就是 100_h) * 然后得到当前可视化区域的长宽大小 * 记录当前头元素和尾元素的位置 * 监听滚动事件 * 判断头元素是否溢出可视化区域 * 是的话就移到尾元素,更新头尾,同时触发更改事件,传递数据为: (当前元素,当前元素下标) * 位置的重置直接根据下标计算即可获得

# 代码

不在本地电脑上,回头拷过来