Unity3d使用Layout Group进行GUI自适应排版

在使用u3d制作GUI时常常会遇到变长排版的需求,例如我们的物品表、技能表。在不同的情况下可能需要我们的底图跟着增长,但一般情况我们的底图不会跟着增长。在这种情况我们可以使用Layout Group 组件,Layout Group主要有 Grid Layout Group、Vertical Layout Group、Horizontal Layout Group。本文使用Horizontal Layout Group举例。

现在有一需求,需要水平排列一堆50X50的按钮,但是数量不清晰,视游戏情况而定。

那么首先我们建一个容器,这里我方便建一个panel命名为ButtonsPanel,然后在里面建一个50X50的Button

Unity3d使用Layout Group进行GUI自适应排版

在这个情况下,如果我们增减Button会变成这样,我们的底图不会跟着排版

Unity3d使用Layout Group进行GUI自适应排版

此时我们可以在Panel加上Horizontal Layout Group组件,但加上后,我们的3个Button变成。

Unity3d使用Layout Group进行GUI自适应排版

此时我们可以在每个Button加上Layout Element 设置Preferred Width和Preferred Height并填上原长宽

Unity3d使用Layout Group进行GUI自适应排版

然后将Panel的Horizontal Layout Group组建的Child Force Expand (Width 和 Height 去掉),在加上Content Size Fitter组件,将Horizontal Fit 是设置为Preferred Size(与Button Layout Element 的Preferred Width 对应),此时会变成这样

Unity3d使用Layout Group进行GUI自适应排版

我们底图已经能自动缩放了,但是还是不那么美观,此时我们可以在Horizontal Layout Group加些边距

Unity3d使用Layout Group进行GUI自适应排版

现在好看多了,当我们再想加按钮,直接复制在Panel下就可以

Unity3d使用Layout Group进行GUI自适应排版

睡觉了,太困了。。。。。。坚持记录学习经历:)