Unity 的 ScrollRect 有问题。
我想用对象池制作一个无限滚动视图。当用户滚动滚动视图时,我从列表中删除了看不见的对象。我在我的“内容”对象上使用垂直布局系统,上面中心子对齐。所以我必须重置内容的 Y 位置。
我的问题是;如果我删除一个对象并重置本地位置,则用户滚动时,在滚动视图的下一个 OnDrag 方法上,它与前一个位置连续。让我用一个例子来解释。
假设 rectTransform 的当前 y 位置是 120。我从这个变换中删除了第一个孩子,并将新的 y 位置设置为 120 - 100 = 20。(100 是已删除孩子的高度。所以其他对象将保持原位。)但是如果我继续向上滚动,下一帧中 rectTransform 的位置是 121-122 等。
我查看了 UI 的 ScrollRect.cs 类。它在 OnBeginDrag 方法上设置了 m_contentStartPosition,并根据其起始位置在 OnDrag 上设置内容的位置。所以我需要在重置rectTransform的y位置时再次设置这个m_contentStartPosition。我怎样才能做到这一点。或者有没有其他方法可以解决这个问题?