Comment optimiser la liste déroulante ScrollRect de UGUI pour réduire la consommation de performances lors de l'instanciation de plusieurs sous-éléments à la fois

Dans le développement de fonctions, il est souvent rencontré que certaines pages doivent instancier des dizaines voire des centaines d'éléments à la fois. Si plusieurs sous-éléments sont instanciés en fonction de la quantité de données à ce moment-là, l'utilisation de la mémoire deviendra très importante. , et UGUI dessinera également des objets au-delà de la zone de la fenêtre d'affichage, provoquant un blocage soudain de l'écran.

A ce stade, il est nécessaire d'optimiser les étapes d'instanciation :

1. L'introduction du pool d'objets :

Tout d'abord, seuls les éléments de la zone de la fenêtre sont toujours affichés lors du glissement de la liste, et les éléments au-delà de la zone de la fenêtre ne sont pas affichés. Ensuite, est-il possible de placer des éléments au-delà de la zone de la fenêtre dans le pool de recyclage et d'aller directement au pool de recyclage pour rechercher de nouveaux éléments lorsque de nouveaux éléments sont nécessaires, afin de réaliser le recyclage des éléments, ce qui peut également réduire l'utilisation de la mémoire . Dans le même temps, comme il n'y a toujours que quelques éléments relativement fixes dans le cycle de contenu, la pression de rendu peut également être considérablement réduite.

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

Je suppose que tu aimes

Origine blog.csdn.net/m0_47975736/article/details/122127503
conseillé
Classement