如何在Unity中使用具有不同单元高度的网格布局组件

时间:2017-09-17 22:49:39

标签: user-interface unity3d unity5

我正在尝试在我的2D游戏中构建一个场景,其中有一个面板,其元素排列如下图所示: enter image description here

ScrollRect应在用户向InputField提供值后动态添加行,从Dropdown中选择一个选项,然后点击Button。这一切都很好,除了ScrollRect的可视区域与父级面板中的兄弟姐妹具有相同的垂直大小。

这是因为父面板的GridLayoutGroup需要指定子单元格大小,如果我指定一个对前两个面板有意义的值,则它对于ScrollRect来说太短了。在父面板上放置一个ContentSizeFitter也无济于事(尽管Unity发出警告,但ContentSizeFitter的内容仍有ScrollRect,因为没有一个新添加的行不会滚动时出现。)

所以我的问题是:

当一个孩子的垂直尺寸会动态变化时,我需要做什么才能让顶级面板的孩子的垂直尺寸基于他们的尺寸?

谢谢!

3 个答案:

答案 0 :(得分:1)

@Programmer和@ Salma572的答案都是正确的。如果您希望该大小为固定数字或像素,请使用LayoutElement。但是,您似乎无法使用比例(百分比)或其他任何动态。

这很遗憾,但你可能需要写一个剧本。

答案 1 :(得分:0)

有可能。将Layout Element组件附加到每个子GameObject。然后,您可以通过修改Layout ElementPreferred WidthHeight变量来动态更改每个子GameObject的大小。

答案 2 :(得分:0)

对于网格布局,您无法动态控制单元格大小。相反,您可以使用水平/垂直布局组,您可以在其中找到选项控件子大小。并且如上所述,在子组件中添加Layout元素并调整大小