type
status
date
summary
tags
category
icon

一、概述

ScrollView在道具栏或背包等界面会频繁出现,我们经常会在其下的Content子对象下生成我们需要展示的物品/对象,但如果在同一时间生成大量的对象会有几个较为严重的问题:
🔷
原生ScrollView组件存在的一些问题
  • 游戏进入界面时明显卡顿。这是因为程序需要在这一帧里需要消耗大量的CPU和内存去生成对象,即使我们使用协程将压力均摊,也不可避免的造成大量内存开销。
  • 滑动条拖拽时,页面卡顿不流畅。这是因为我们在拖拽时改变了UI元素的属性,这会导致系统在每帧都尝试对网格进行合并重构,这个过程同样会导致大量的CPU浪费。
要优化这种情况,就必须对滚屏组件进行改造。改造的方法是:
初始时只实例化数量合理的对象,然后在拖动期间,实时判断是否有UI元素被移出画面,如果某行元素被移出Viewport的显示范围,则改变这一行UI元素的Transform,将他们填补到最下面/最上面一行,再对该行所有的UI元素属性重新设置,例如改变UI元素中图像的内容,让它展现为在该位置需要显示的元素的样子。这样在视觉体验上,用户感受不出有任何变化。

二、使用

  1. 在ScrollView的Content对象下挂载DynamicGridLayoutVertical这个脚本
  1. 总共提供了如下四个接口:

三、代码链接

Unity 组件工具 TMP/Text字体替换工具Unity 笔记 移动平台应用性能优化
  • Twikoo
  • Cusdis