Cómo optimizar la lista de desplazamiento ScrollRect de UGUI para reducir el consumo de rendimiento al crear instancias de varios subelementos a la vez

En el desarrollo de funciones, a menudo se encuentra que algunas páginas necesitan instanciar docenas o incluso cientos de elementos a la vez. Si se instancian varios subelementos de acuerdo con la cantidad de datos en ese momento, el uso de memoria será muy grande. , y UGUI también dibujará objetos más allá del área de la ventana gráfica, lo que hará que la pantalla se atasque repentinamente.

En este momento, es necesario optimizar los pasos de instanciación:

1. La introducción del grupo de objetos:

En primer lugar, solo los elementos en el área de la ventana gráfica siempre se muestran al deslizar la lista, y los elementos más allá del área de la ventana gráfica no se muestran. Luego, ¿es posible colocar elementos más allá del área de la ventana de visualización en el grupo de reciclaje e ir directamente al grupo de reciclaje para buscar nuevos elementos cuando se necesitan nuevos elementos, a fin de realizar el reciclaje de elementos, lo que también puede reducir el uso de memoria ? . Al mismo tiempo, dado que siempre hay solo unos pocos elementos relativamente fijos en el ciclo de contenido, la presión de representación también se puede reducir considerablemente.

//获取可用的item
ItemCell GetItem(int index)         //index代表获取到item后,该item当前需要显示的目标index
{
	//为什么这里不用GameObject,而用自定义的组件ItemCell?
	//解答:ItemCell是自定义的脚本,用于对item物体宽高、msg等进行刷新和显示控制,单纯的GameObject是无法达成这样的效果
	ItemCell item;   
	
	//获取item有两种方式——这个很重要:
	//第一种:在当前item列表中查找
	//当缓慢的上滑滚动条时,为了item频繁刷新导致的视觉疲劳,此时不应该直接去回收池中获取item,而应该先在当前显示的item列表中查询是否有可用的对象。
	//当然直接的刷新item列表是不可避免的,如从当前位置快速的滑动到某地,此时上一

Supongo que te gusta

Origin blog.csdn.net/m0_47975736/article/details/122127503
Recomendado
Clasificación