针对一次加载很多格子的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是每次滑动都会调用的函数。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章