跳到主要内容

背包列表:图集、滚动和列表复用

依据:Cocos Creator 3.8 ScrollView、UI 合批和资源管理文档。演示在浏览器运行,微信真机未验证。

目标画面​

背包里每个格子有图标、品质边框、数量和选中态。简单版本可以一次创建所有格子,适合规模有限且验证后成本可接受的界面;复杂版本用少量可见格子承载更长的数据列表,加入筛选、排序、异步图标和拖拽。

长列表只有窗口及缓冲行可见,数据总数不等于实际节点数

列表复用的核心不是“隐藏看不见的物品”,而是将固定的一组界面槽位重新绑定到不同数据。滚动时根据偏移计算起始行,再更新每个槽位的数据与位置;内容总高度仍对应全部数据,滚动条才能表达完整范围。

三种数量要分别观察​

物品数据可以有很多条,可见格子只有几行,实际创建节点还要考虑缓冲行。一个格子又可能包含多个绘制组件。实验里显示的节点或格子数量,不等于引擎 Draw Call;是否合批还依赖纹理、材质、顺序等条件。

复用槽位从旧物品重新绑定到新物品,异步图标需校验物品标识

打开背包列表实验台,增加物品总数,切换全部创建与复用,观察创建数量和当前可见范围。滚动到中间再改变数据,检查偏移是否仍有效。这个浏览器示例说明复用原理,不是 Cocos 的虚拟列表插件。

资源与交互怎样配合​

图标使用统一视觉尺寸,按使用范围规划图集;数量文字与品质边框保持独立。异步请求图标时记录当前物品 ID,返回时再次检查槽位是否还绑定该 ID。否则快速滚动会把旧请求的结果贴到新物品上。

点按与滚动也需仲裁:超过移动阈值就取消点击,拖拽换位则进入独立手势状态。列表复用后,应重置选中、禁用、稀有光效和监听,避免上一个物品的状态残留。

常见失败:滚着滚着显示错数量​

复用只更新图标,没有更新数量、品质或选中态;或监听闭包捕获旧索引。让绑定函数完整设置所有可变状态,让点击时读取当前绑定数据。排序后使用稳定物品 ID,而不是把可见下标当成业务身份。

交付检查​

覆盖空列表、单行、最后一行不满、最大数量、快速滚动、加载失败、筛选后条数减少和窗口大小改变。更复杂的可变高度列表需要累计高度、定位和重排策略,不能直接照搬固定高度公式。成本测量结合 资源管理 与 性能边界。

官方来源与适用范围​

资料核查日期:2026-10-30。文中的案例参数与图解用于教学;目标项目应按所用版本及平台重新验证。