Unity的ScrollRect存在问题。
我想用对象池创建一个无限的scrollview。当用户滚动滚动视图时,我从列表中删除未见过的对象。我在我的'内容'对象上使用垂直布局系统与上中心子对齐。所以我必须重置内容的Y位置。
我的问题是;当用户滚动时,如果我删除一个对象并重置本地位置,则在下一个OnDrag方法的scrollview中,它从前一个位置继续。让我用一个例子来解释。
让我们说,rectTransform的当前y位置是120.我从这个变换中删除了第一个孩子,并将新的y位置设置为120 - 100 = 20.(100是已删除子项的高度。所以其他对象将保持原样。 )但是如果我继续向上滚动,下一帧中rectTransform的位置是121-122等。
我查看了UI的ScrollRect.cs类。它在OnBeginDrag方法上设置了m_contentStartPosition,并根据其开始位置在OnDrag上设置内容的位置。因此,当我重置rectTransform的y位置时,我需要再次设置此m_contentStartPosition。我怎样才能做到这一点。或者还有其他方法可以解决这个问题吗?
答案 0 :(得分:0)
从技术上讲,您在滚动和更新内容时不需要重置滚动位置。 确保您的布局正常工作并滚动 rect 内容 rect 变换会在您生成新元素时更改大小。
内容的规范化滚动位置自动更新。