1

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。我怎样才能做到这一点。或者有没有其他方法可以解决这个问题?

4

1 回答 1

0

从技术上讲,您在滚动和更新内容时不需要重置滚动位置。确保您的布局正常工作,并且当您生成新元素时,滚动矩形内容矩形变换正在改变大小。

内容的标准化滚动位置会自动更新。

于 2021-01-13T10:52:20.517 回答