目录
1.Horizontal Layout Group(水平布局组)
本篇文章来学习一下Unity常用的布局组件,主要包括Horizontal Layout Group(水平布局组),Vertical Layout Group(垂直布局组),Grid Layout Group(网格布局组)。这些布局组件常与Content Size Fitter、Layout Element组件一起使用。
常用布局组件
1.Horizontal Layout Group(水平布局组)
1)作用
将子布局元素水平有序排列。
2)属性
Padding填充 |
布局组边缘内的内边距 |
Spacing间距 |
布局元素之间的间距 |
Child Alignment子对齐 |
如果子布局元素未填充所有可用空间,则用于子布局元素的对齐方式。 |
Control Child Size控制子项大小 |
布局组是否控制其子布局元素的宽度和高度 |
Use Child Scale使用子项比例 |
布局组在调整元素大小和布局元素时是否考虑其子布局元素的比例。Width和Height对应于每个子布局元素的Scale>X和Scale>Y值Rect Transform组件。不能使用Animator控制器 |
Child Force Expand子项强制扩展 |
是否强制子布局元素拓展 |
3)注意
宽度由各自的最小宽度、首选宽度和灵活宽度根据以下方式进行确定:
①所有子布局元素的最小宽度相加,它们之间的间距也相加。结果是Horizontal Layout Group的最小宽度
②所有子布局元素的首选宽度相加,它们之间的间距也会相加。结果是Horizontal Layout Group的首选宽度。
③如果Horizontal Layout Group处于其最小宽度或更小,则所有子布局元素也将具有其最小宽度。
④Horizontal Layout组越接近其首选宽度,每个子布局元素也就越接近其首选宽度。
⑤如果Horizontal Layout Group的宽度大于其首选宽度,它将根据子布局元素各自的灵活宽度按比例分配额外的可用空间。
4)举例
想使用子物体的宽高,且让子物体水平排列。
2.VerticalLayout Group(垂直布局组)
1)作用
将子布局元素水平有序排列。
2)属性
Padding填充 |
布局组边缘内的内边距 |
Spacing间距 |
布局元素之间的间距 |
Child Alignment子对齐 |
如果子布局元素未填充所有可用空间,则用于子布局元素的对齐方式 |
Control Child Size控制子项大小 |
Layout Group 是否控制其子布局元素的宽度和高度 |
Use Child Scale使用子项比例 |
布局组在调整元素大小和布局元素时是否考虑其子布局元素的比例。Width和Height对应于每个子布局元素的Scale>X和Scale>Y值Rect Transform组件。不能使用Animator控制器 |
Child Force Expand子项强制扩展 |
是否强制子布局元素展开以填充额外的可用空间 |
3)注意
高度由各自的最小高度、首选高度和灵活高度根据以下方式进行确定:
①所有子布局元素的最小高度相加,它们之间的间距也相加。结果是 Vertical Layout Group 的最小高度。
②所有子布局元素的首选高度将相加,并且它们之间的间距也会相加。结果是 Vertical Layout Group 的首选高度。
③如果 Vertical Layout Group 处于其最小高度或更小,则所有子布局元素也将具有其最小高度。
④Vertical Layout 组越接近其首选高度,每个子布局元素也就越接近其首选高度。
⑤如果 Vertical Layout Group 高于其首选高度,它将根据子布局元素各自的灵活高度按比例分配额外的可用空间。
4)举例
想使用子物体的高,并让子物体的宽度扩充到父物体的大小,使其垂直排列并居中显示。
3.Grid Layout Group(网格布局组)
1)作用
将子布局元素有序放置在网格中。
2)属性
Padding填充 |
布局组边缘内的内边距 |
Cell Size单元大小 |
用于组中的每个布局元素的大小 |
Spacing间距 |
布局元素之间的间距 |
Start Corner起点角 |
第一个元素所在的角 |
Start Axis起始轴 |
沿哪个主轴放置元素。Horizontal将在开始新行之前填充一整行。Vertical将在开始新列之前填充整个列 |
Child Alignment子对齐 |
布局元素未填充所有可用空间时用于布局元素的对齐方式 |
Constraint约束 |
将网格限制为固定的行数或列数,以帮助自动布局系统 |
3)注意
与其他布局组不同,网格布局组会忽略其包含的布局元素的最小、首选和灵活大小属性,而是为所有元素分配一个固定大小,该大小由网格布局组本身的Cell Size属性定义。
4)举例
想要使子物体三行三列显示。
制作一个简单的二级菜单,实现展开关闭
1.添加一个空物体MenuList,设置好位置后,添加Vertical Layout Group垂直布局组件并进行相应设置,用于展示一级菜单的内容。
2.MenuList下新建空物体FirstMenu,给FirstMenu添加Vertical Layout Group垂直布局组件,并进行相应设置。FirstMenu为每个一级菜单的内容,包括一级菜单的Toggle和二级菜单的内容。
3.FirstToggle为Toggle,设置初始为开启状态,即勾选Is On,给其添加事件,当Toggle值改变时,SecondMenu的显隐会发生变化。并给FirstToggle添加Layout Element布局元素组件,进行相应设置。
4.给SecondMenu添加Vertical Layout Group垂直布局组件,并进行相应设置。
5.给所有的二级Toggle添加Layout Element布局元素组件,进行相应设置。如SecondToggle。
效果如下:
具体可以查看Unity官方文档。
好了,本次的分享到这里就结束啦,希望对你有所帮助!优秀!