unity3d - Unity Vertical Layout Group 高度不计算子项

我觉得我不了解 Unity 2020.3.21 中的 Vertical Layout Group 组件,我希望有人能解释我缺少的内容。

我有一系列运行时控制的 UI 组件,我希望它们从上到下垂直显示。我需要能够在运行时打开和关闭这些组件,并让父垂直布局组大小自动更新为所有事件子组件的高度。这正是垂直布局组应该处理的事情,对吧?

当我构建一个简单的示例时,我看到垂直布局组将子项正确定位在垂直列表中。然而,它在测量自己的高度时完全忽略了 children 的体型。这是一个问题,因为我希望能够将此容器放入 ScrollView 中——如果高度不准确,则 ScrollView 无法正常工作。

这是我的演示。我在 VLG 中有一系列 child ,他们的 RectTransform 中都有明确的设置高度。它们都是 VLG 的直接子代。它们都不使用 LayoutElement;所有高度都在 RectTransform 中明确定义。这是场景层次结构,括号中是每个组件的编译时 RectTransform 高度。

Canvas (325x812)
  GameObject (812)
    Vertical Layout Group (100)
      Text (45)
      Spacer (100)
      Text Input (48)
      Spacer (20)
      Button (48)

这是我的 VLG 设置:

当我运行游戏时,我可以在 Scene 选项卡中看到每个 UI 对象的轮廓。 children 显然已经确定了他们的高度。然而,VLG 仍然具有 100 的静态编译时高度,而不是子高度的总和。

我是否遗漏了有关垂直布局组如何工作的信息?我怎样才能让这个 VLG 在运行时将它的 Height 属性设置为它的事件子项的实际总高度?

最佳答案

将垂直适合设置为首选大小的 ContentSizeFitter 应该可以解决问题。我根据您的示例使用简化结构进行了快速测试,并正确计算了高度(子对象的高度为 100+50+75):

https://stackoverflow.com/questions/69758674/

相关文章:

google-cloud-platform - 如何继承访问权限以查看属于 GCP 组织的所有项目?

r - flextable 中有条件的粗体值

c++ - 在 C++ 中迭代枚举类的常用方法是什么?

java - 从 Double.toLongBits 创建的 long 中获取 double

postgresql - 在 PostgreSQL 中存储 UUID 的最佳数据类型是什么?

r - 如何从 R 中的多列创建合并值的新数据框

go - 在 Go 中将任意函数作为参数传递

sorting - 如何按索引对 Vec 进行排序?

kotlin - 在 Android Compose 的 View 模型中使用 State

javascript - React 中的 for 循环