针对一次加载很多格子的scrollview的优化,第一次只加载可视区域的格子,其他的用空物体占位,在每次滑动时检测需要实例化的格子,通过对象池重用第一次的格子。可以根据每行格子的数量只检测每行的第一个格子是否需要更新,然后就可以更新一行或者跳过检测一行。

1.

//检测是否需要刷新UI

//o是格子,itemHalfHeight是格子高度的一半
bool CheckUpdate(GameObject o,float itemHalfHeight)
{
float itemCellOffestY = Mathf.Abs(mScroll.transform.InverseTransformPoint(o.transform.position).y);//格子相对于mScroll的偏移,mscroll是scrollrect组件
return (itemCellOffestY - itemHalfHeight) < (scrollHalfHeight) ? true : false;//scrollHalfHeight是scrollrect显示区域高度的一半
}

2.

mScroll.onValueChanged.AddListener(delegate { WrapContent(); });//添加滚动事件回调  ,WrapContent是每次滑动都会调用的函数。

相关文章:

  • 2022-12-23
  • 2021-09-26
  • 2022-12-23
  • 2021-04-21
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
猜你喜欢
  • 2021-08-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-18
  • 2021-10-11
相关资源
相似解决方案