type
status
date
summary
tags
category
icon
一、概述
ScrollView在道具栏或背包等界面会频繁出现,我们经常会在其下的Content子对象下生成我们需要展示的物品/对象,但如果在同一时间生成大量的对象会有几个较为严重的问题:
原生ScrollView组件存在的一些问题
- 游戏进入界面时明显卡顿。这是因为程序需要在这一帧里需要消耗大量的CPU和内存去生成对象,即使我们使用协程将压力均摊,也不可避免的造成大量内存开销。
- 滑动条拖拽时,页面卡顿不流畅。这是因为我们在拖拽时改变了UI元素的属性,这会导致系统在每帧都尝试对网格进行合并重构,这个过程同样会导致大量的CPU浪费。
要优化这种情况,就必须对滚屏组件进行改造。改造的方法是:
初始时只实例化数量合理的对象,然后在拖动期间,实时判断是否有UI元素被移出画面,如果某行元素被移出Viewport的显示范围,则改变这一行UI元素的Transform,将他们填补到最下面/最上面一行,再对该行所有的UI元素属性重新设置,例如改变UI元素中图像的内容,让它展现为在该位置需要显示的元素的样子。这样在视觉体验上,用户感受不出有任何变化。
二、使用
- 在ScrollView的Content对象下挂载DynamicGridLayoutVertical这个脚本
- 总共提供了如下四个接口:
三、代码链接
- 作者:Felix
- 链接:felix1125.com/article/6485d80b-a01f-422b-bf4f-00810c751271
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章