我正在尝试在我的2D游戏中构建一个场景,其中有一个面板,其元素排列如下图所示:
ScrollRect
应在用户向InputField
提供值后动态添加行,从Dropdown
中选择一个选项,然后点击Button
。这一切都很好,除了ScrollRect
的可视区域与父级面板中的兄弟姐妹具有相同的垂直大小。
这是因为父面板的GridLayoutGroup
需要指定子单元格大小,如果我指定一个对前两个面板有意义的值,则它对于ScrollRect
来说太短了。在父面板上放置一个ContentSizeFitter
也无济于事(尽管Unity发出警告,但ContentSizeFitter
的内容仍有ScrollRect
,因为没有一个新添加的行不会滚动时出现。)
所以我的问题是:
当一个孩子的垂直尺寸会动态变化时,我需要做什么才能让顶级面板的孩子的垂直尺寸基于他们的尺寸?
谢谢!
答案 0 :(得分:1)
@Programmer和@ Salma572的答案都是正确的。如果您希望该大小为固定数字或像素,请使用LayoutElement
。但是,您似乎无法使用比例(百分比)或其他任何动态。
这很遗憾,但你可能需要写一个剧本。
答案 1 :(得分:0)
有可能。将Layout Element
组件附加到每个子GameObject。然后,您可以通过修改Layout Element
的Preferred Width
和Height
变量来动态更改每个子GameObject的大小。
答案 2 :(得分:0)
对于网格布局,您无法动态控制单元格大小。相反,您可以使用水平/垂直布局组,您可以在其中找到选项控件子大小。并且如上所述,在子组件中添加Layout元素并调整大小