微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

组合滚动矩形中的文本和按钮

如何解决组合滚动矩形中的文本和按钮

我正在尝试创建一个可滚动的 UI 对象,它有 2 个部分,一个在另一个部分的顶部:一个文本部分和一个按钮列表部分。我的主要问题是文本和按钮列表的大小会根据播放器正在查看的内容而变化。

似乎只是将文本和按钮扔到一个空的 UI 对象中是行不通的,因为空的游戏对象不具有其子对象的大小,并且由于空对象没有自己的大小,滚动通过其内容是不可能的。

是否有我不知道的元素可以帮助我?

解决方法

这是我用于 Scroll 的设置。您似乎缺少第三个对象,即内容对象。它使用 Content Size FitterLayout Group 决定内容大小的物理大小。我决定包含整个设置,以防您遗漏其他内容。

Parent Object (Mask OR Rect Mask 2D) - Object that is the visual bounds of your UI
     -> Scroll Object (ScrollRect) - Actual scroll component that drives the UI scroll
          -> Content Object (Horizontal OR Vertical Layout Group AND Content Size Fitter) - Is the parent of your actual data in your scroll 

为了更好地解释这一点,Mask 用于当您拥有仍希望作为最大观看范围的非矩形资产时。此遮罩之外的任何内容都不会被渲染。 Mask 比 Rect Mask 2D 更昂贵,因此如果您的视口是正方形或矩形,则使用 2D 组件。

Scroll Rect 是 Unity 中 UI 元素滚动的驱动程序。确保选中该框是水平还是垂直。我假设在你的用例中你使用的是垂直的。确保将 Content 字段设置为该对象的子项,将 Viewport 字段设置为父项(掩码)。

内容对象有两个组件。第一个是 Content Size Fitter,它将强制此对象为其内容的大小。如果您的滚动是垂直滚动,请将 Vertical Fit 设置为首选大小并将 Horizontal Fit 保留为不受约束的大小。如果是相反的,那就设置我刚才所说的相反。此对象上的另一个组件是 Horizontal Layout Group OR Vertical Layout Group。不同之处在于您的滚动方向。此对象设置中的复选框非常重要。查看 docs 了解每个人的作用。

如果您按照我指定的方式附加组件并在布局组上设置正确的设置,您应该能够拥有尽可能多的动态对象,并在文本和按钮之间进行可变大小的交换。

如果您有任何其他问题,请告诉我。用户界面一开始可能有点令人生畏,但一旦你弄清楚了,它就会变得容易得多。

编辑: 要使用文本对象和按钮实现可以改变大小的对象,您需要结合使用内容大小调整器和布局组。

这是一个示例层次结构 Hierarchy

这是结果Result

使用布局组和内容适配器的组合强制文本所在的容器达到它需要的大小。如果您将这些资产设为静态,意味着它们在运行时都不是数据驱动的,那么这应该立即起作用。如果您在运行时更改此数据,则需要在父对象上使用 LayoutRebuilder 以确保布局正确重建。如果您有任何问题,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。