我觉得我不理解Vertical Layout Group
Unity 2020.3.21 中的组件,我希望有人能解释我所缺少的内容。
我有一系列运行时控制的 UI 组件,我希望它们从上到下垂直显示。我需要能够在运行时打开和关闭这些组件,并使父级垂直布局组大小自动更新为所有活动子级的高度。这正是垂直布局组应该处理的事情,对吧?
当我构建一个简单的示例时,我看到垂直布局组正确地将子项放置在垂直列表中。然而,它在测量自己的身高时完全忽略了孩子们的尺寸。这是一个问题,因为我希望能够将此容器放入滚动视图中 - 如果高度不准确,则滚动视图将无法正常工作。
这是我的演示。我在 VLG 中有一系列子项,它们在 RectTransform 中都有明确的设置高度。它们都是 VLG 的直接子级。他们都没有使用LayoutElement
; 所有高度都在 a 中明确定义RectTransform
。这是场景层次结构,括号中是每个组件的编译时 RectTransform 高度。
Canvas (325x812)
GameObject (812)
Vertical Layout Group (100)
Text (45)
Spacer (100)
Text Input (48)
Spacer (20)
Button (48)
Run Code Online (Sandbox Code Playgroud)
这是我的 VLG 设置:
当我运行游戏时,我可以在Scene
选项卡中看到每个 UI 对象的轮廓。孩子们的身高显然已经设定好了。然而,VLG 仍然具有其静态编译时高度,100
而不是子高度的总和。
我是否遗漏了垂直布局组的工作原理?我怎样才能让这个VLG在运行时将其Height
属性设置为其活动子项的实际总高度?
小智 9
ContentSizeFitter 将 Vertical Fit 设置为首选尺寸应该可以解决问题。我根据您的示例使用简化结构进行了快速测试,并正确计算了高度(子对象的高度为 100+50+75):
归档时间: |
|
查看次数: |
7004 次 |
最近记录: |