Unity Layout相关组件的使用,LayoutElement为主

Layout相关的组件有6个

GridLayoutGroup,VerticalLayoutGroup,HorizontalLayoutGroup,ContentSizeFitter,AspectRatioFitter,LayoutElement

讲一些大家不知道的

AspectRatioFitter

这个组件实际使用手感其实挺废的,效果是用于固定当前组件的比例,而且这个组件不推荐父节点有LayoutGroup相关的组件,实际效果其实倒也一般。
在这里插入图片描述
这个组件有5中模式,除了第一个为空之外,其余四个为,宽度控制,高度控制,内切父节点,外切父节点
在这里插入图片描述
有用一个参数,比例,上手试一下就知道了,不是很实用的组件

VerticalLayoutGroup,HorizontalLayoutGroup

这两个我认为拼UI的同学已经用了挺多的了,相关的参数应该也是不难理解,就不多写了,如果有需要再补充

重点:LayoutElement

MinWidth,MinHeight(以下这一组简写为MinWH)

看字面很好理解,最小值,设置之后如果layout系统控制了当前节点,那么当前节点的宽高的最小值就不会小于设置的值,这个值优先级很高。甚至盖过PreferredWH。

PreferredWidth,PreferredHeight(以下这一组简写为PreferredWH)

字面意思为优先宽高,他是作为一个最大值存在的,有时候又作为一个保底值的存在,但是优先级不是很高。
用例子来说明这个值的效果。
在这里插入图片描述父节点开启Control ChildSize,控制子节点的高度,但是不勾选Child Force Expand(子节点拓展充满容器),那么这个值就会变成最大值。
在这里插入图片描述
在这里插入图片描述
当你扩大容器的时候,容器大小超过所有子节点的 PreferredWH的和,那么所有子节点的大小就会达到 PreferredWH,不会再扩大
在这里插入图片描述
在这里插入图片描述
当你压缩容器大小的时候,节点大小就会无限接近MinWH,那么这个值是多少呢

假设父节点容器大小为160,Spacing为10,A节点PreferredWH为200,MinWH为100,B节点PreferredWH为200,MinWH不开启或为0(不开启默认为0)

通过观察可得,父节点的高度减去Spacing再减去所有节点的MinWH剩下的值,会被按比例分配给每个剩下的节点,按照PreferredWH-MinWH得出的值为权重分配。
那么AB节点得到的比例就为1:2(200-100:200)
那么A的宽高就为(160-10(Spacing)-100(A的MinWH)) x (1/3)+100(A的MinWH)=50 / 3 + 100 = 116.667
那么B的宽高就为(160-10(Spacing)-0(B的MinWH)) x (2/3)+0(B的MinWH)= 33.334

而当你父节点打开Child Force Expand的时候,这个值就没有什么意义了。

FlexibleWidth,FlexibleHeight

最有意思也是最难理解的,这个是一个比例一样的东西
还是分为容器是否打开Child Force Expand
当容器关掉Child Force Expand的时候,这个值就变成了一个占据比例,开启了这个属性的节点会分配容器剩余的大小。
在这里插入图片描述
容器大小设置为700。
在这里插入图片描述
在这里插入图片描述
可以看到,两个节点的PreferredWH大小都为200,这个时候PreferredWH则不为最大值,为保底值,那么700的容器就剩下300可分配,A节点的 FlexibleWH为2,B节点为1,那么按照2:1的比例,A的最终大小为400,B为300。
在这种情况下,如果不启用FlexibleWH,那么就默认这个节点的FlexibleWH为0。

另外一种情况就是打开Child Force Expand了
打开之后,所有子节点最小FlexibleWH为1,无论有没有开启都为1,怎么调整都无法小于1。其余用法基本相同,

LayoutPriority

有些意义不明吧,优先级,同一个节点上面的不同layout组件的优先级,也能想到应用场景。
从程序上来说,图片Image和文本Text也属于layout系统的,然后图片和文本也有自己的大小计算方式,
比如说图片的preferredWH是自己的图片的大小。这时候如果加上layoutElement,那么系统就会不知道使用哪一套方案,所以这时候优先级就起作用了。
优先级越高的方案会被使用,图片和文本默认为0,如果layoutElement的LayoutPriority设置为-1,那么就可以看到当前节点的preferredWH会被图片和文本控制了,当图片和文本关闭的时候,layoutElement才会生效。
具体应用场景有些意义不明。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值