如何在Unity中更改VerticalLayoutGroup的扩展方向而无需旋转?

4
我需要更改VerticalLayoutGroup的展开方向。 默认情况下,该组将向下扩展。 我想要的是,该组将向上扩展。
期望的行为在这个视频中描述。 (链接到stackoverflow上的答案https://dev59.com/e6Dia4cB1Zd3GeqPF5TL#43192904
链接中的解决方案是将LayoutGroup旋转180度。 现在这似乎更像是一个解决方法,因为所有子项也必须旋转。 这个建议的解决方案不会产生视频中显示的预期行为。
我按照Unity Answers中的描述将ContentSizeFitter添加到LayoutGroup中。现在,LayoutGroup将向两个方向(向上和向下)扩展。

有没有不旋转LayoutGroup就能实现所需行为的解决方案?

编辑: 我还注意到旋转方法的一个缺点: 来自MixedRealityToolkit的Billboard Script会强制LayoutGroup旋转回0°。

3个回答

14

这对我有效:

Unity Inspector screenshot

请注意垂直布局组上的子对齐设置以及矩形变换上的枢轴设置。这使得布局组在添加更多项目时向上扩展。
还要注意内容大小适配器组件的存在,以及其垂直适配设置为首选大小,这将在添加或删除内容时调整布局组的高度。

3
直到我添加了内容大小调整器组件,并将垂直适配设置为“首选尺寸”,这才对我起作用。 - Max Izrin
2
@MaxIzrin 看看这张图片!Content Size Fitter组件在那里,就像您描述的一样;)但是我会根据此澄清我的答案。 - frankhermes
@frankhermes 抱歉我表达不够清晰,我的意思是我必须将它添加到布局内的对象中,尽管Unity警告不要这样做,但如果没有它似乎无法正常工作。 - Max Izrin

1

虽然这是一个老问题,但是被接受的答案让它变得比必要的更加复杂:通过在VerticalLayoutGroup中使用Spacing的符号可以控制所需的扩展方向。

查看此GIF


这里举个例子会更好。 - boj
1
我认为你是不对的。你可以在答案的截图中看到它有负间距。这只会使布局中的项目重叠,而不会改变布局自身调整大小的方式,据我所知。 - frankhermes
嗨,@frankhermes,我在我的答案中添加了一个GIF。如果您将“Spacing”设置得足够小,则您的元素将重叠,这是正确的。但是,改变“Spacing”的符号只会将它们对齐到给定距离的另一个方向。 - Schnabeltier1991
1
虽然在多种情况下这可能是最简单的解决方法,但至少需要具有相同高度的元素。如果没有,这些元素将重叠在一起,这就是我们首先使用垂直布局组的原因。 - SwingingTom

0
改变y方向的中心点就可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接