捕捉到滚动视图元素

Snap to scrollview elements

我在 Unity3D 中有一个滚动视图,其中包含我的所有元素。它只能水平滚动,并且随时可以看到多个 child 元素。大多数时候是 6 个,在极少数情况下可以是 5 个。设置是 2 行,每行 3 个对象

示例:

如您所见,大多数时候它是 6 个(和数字 7/8 的一部分)对象,在极少数情况下它可以是 5 个。(例如接近尾声)

我想要的是:拖动对象时,它总是捕捉到6个居中的对象。所以当我有 12 个对象并且用户稍微拖动 window 时,我希望它捕捉到最近的 6 个。我使用 Unity 的 Scroll Rect window 和它下面的水平布局组来实现我当前的结果。使用以下设置: 其中 "GameGrid" 只是一个带有水平布局组的空对象。在游戏网格下方,游戏图块是在运行时制作的。

使用 ScrollView 并使您的对象成为 ScrollView->Viewport->Content 对象的子对象。您现在可以控制 Content RectTransform 的 anchoredPosition 及其所有子项的位置。您可以通过将 Content RectTransform sizeDelta.x 除以给定宽度并使用正确的位置值来轻松计算 "snap" 位置。