通常我们遇到问题,都是在对滑动列表的各种操作中发现了不可预知的问题(废话)
下面我总结一下我遇到的一些问题:
1. WrapContent 初始化过程中没有调用 onInitializeItem 方法,为什么?
我们可以打开UIWrapContent代码,一探究竟,从此方法来看,我们有可能在UIWrapContent初始化之前,没有
对 onInitializeItem进行实例化,导致没有进入到我们自身的回调方法。
protected virtual void UpdateItem (Transform item, int index)
{
if (onInitializeItem != null)
{
int realIndex = (mScroll.movement == UIScrollView.Movement.Vertical) ?
Mathf.RoundToInt(item.localPosition.y / itemSize) :
Mathf.RoundToInt(item.localPosition.x / itemSize);
onInitializeItem(item.gameObject, index, realIndex);
}
}
2. 当我们只有一个Gird的时候WrapContent的UpdateItem调用了两次,为什么?
我们发现调用UpdateItem地方有很多,但是总结归纳起来,有两个地方在调用
protected virtual void Start ()
{
SortBasedOnScrollMovement();
WrapContent();
if (mScroll != null) mScroll.GetComponent<UIPanel>().onClipMove = OnMove;
mFirstTime = false;
}
没错,就是SortBased

本文总结了在Unity中使用WrapContent时遇到的常见问题,包括初始化未调用onInitializeItem方法、UpdateItem被调用两次的情况,以及只有一个Grid时的初始化和位置偏移问题。作者通过分析源码和自身经验,提出了相应的解决策略,并邀请读者分享更好的解决方案。
最低0.47元/天 解锁文章
1022

被折叠的 条评论
为什么被折叠?



