首页 > 解决方案 > 滚动在 Unity 中不起作用,它根本没有反应

问题描述

这样的问题,从单词滚动根本不起作用。也就是说,他没有滚动列表,尝试了 YouTube 上的各种教程,阅读了文档,甚至观看了官方课程,但有些东西没有滚动出来。如果您需要屏幕截图或类似的东西,我可以将它们提供给任何图像交换。

在此处输入图像描述

在此处输入图像描述2

在此处输入图像描述3

标签: unity3duiscrollview

解决方案


我不确定您的确切设置,但会为Vertical滚动提供通用设置。如果您需要帮助将其实施到您的特定 UI,我可以调整或添加其他信息到答案。

首先,这是我的层次结构的设置: 示例层次结构

为了理解我为什么要进行所有设置,我将分解每个对象和附加的组件、锚定、着色等。

Panel_Mask

卷轴的最外层应该是Mask. Mask如果您的精灵的几何形状不是矩形,您可以使用组件,也可以使用Rect Mask2D性能更高的组件,但只有当您的 UI 是矩形时才能正常工作。您还会注意到我的遮罩组件的颜色几乎完全清晰。您不需要这样做,但颜色已设置,因此 alpha 为(1/255). 如果您Mask在对象上有 a 并且 alpha 为0,则所有子对象都不会出现。我ScrollRect改为在对象上设置滚动的背景颜色。

Panel_Scroll

下一层将是您的ScrollRect. 由于Mask是 UI 的整个可见部分,因此ScrollRect定义了用户可以在 UI 中滚动的空间。在这种情况下,我将锚点设置为可拉伸以适应最大滚动空间。除此之外,在设置ScrollRect. 首先,检查您希望滚动的方向,无论是horizontal还是vertical。接下来,您将需要分配Viewport您的 UI。这Viewport只是用户可以看到滚动的空间。由于有一个Mask组件,可见部分是 this 中的任何内容Mask,因此将 指定Panel_Mask为视口。最后,您需要分配Content滚动条,这是滚动条将包含并允许用户在其间移动的实际数据。Panel_Scroll,的子对象Panel_Content是应该在这里分配的对象。

面板_内容

设置滚动的最后一部分将是我们的内容。内容是保存用户可以滚动的所有数据的对象。由于对象的数量是可变的,因此您需要根据需要分配HorizontalLayoutGroupaVerticalLayoutGroupGridLayoutGroup。对于您的情况,VerticalLayoutGroup当您的卷轴具有垂直运动时,将起到作用。您可以弄乱布局组的特定设置,但对于我的设置,我使滚动内容对象适合其容器的宽度并定义它们自己的高度。我还添加了一些间距来区分滚动中的对象。因为我通常喜欢让内容从我的 UI 容器的顶部开始,我还将内容的锚点设置为拉伸到顶部对齐,这意味着它将填充其父级的宽度并且将始终打开父容器的顶部。最后一个组件是 a ContentSizeFitter,它强制对象调整到其子对象的大小。随着列表中对象列表的增长, 将ContentSizeFitter随之增长,同样,如果它缩小,Panel_Content.

图像数据

我的设置没什么特别的,因为它们只是带有子文本的图像组件。根据您希望 UI 的外观,您可以调整此对象上所需的任何内容。

这是作为卷轴工作的成品的 GIF: 示例 2

稍后在 gif 中,我展示了场景视图,以显示Mask当我向上和向下滚动列表时组件是如何工作的。如果您有任何问题,请告诉我。


推荐阅读