自动布局组件
- 效果
- Hierarchy视图
-
- 预设物(Equip)
- 宽高比适配器 (Aspect Ratio Fitter)
- 图集(Equip Atlas)
-
- 网格布局
- Grid Layout Group
- 内容大小适配器 (Content Size Fitter)
- 水平布局
- 垂直布局
效果
Hierarchy视图
Canvas
Scroll View
预设物(Equip)
Image游戏对象的图片需要从图集中获取,配置好预设物后配置Source Image为None
宽高比适配器 (Aspect Ratio Fitter)
| 属性 | 功能 |
|---|
| Aspect Mode | 如何调整矩形的大小来强制实施宽高比。 |
| None | 不让矩形适应宽高比。 |
| Width Controls Height | 根据宽度自动调整高度。 |
| Height Controls Width | 根据高度自动调整宽度。 |
| Fit In Parent | 自动调整宽度、高度、位置和锚点,使矩形适应父项的矩形,同时保持宽高比。父矩形中可能有一些空间不会由此矩形覆盖。 |
| Envelope Parent | 自动调整宽度、高度、位置和锚点,使矩形覆盖父项的整个区域,同时保持宽高比。此矩形可能比父矩形延伸更广。 |
| Aspect Ratio | 要强制实施的宽高比。这是宽度除以高度的比值。 |
图集(Equip Atlas)
创建图集
Project Settings ---> Editor ---> Sprite Packer ---> Mode 配置模式为Enabled
⚠️未找到Sprite Atlas 可先下载导入2D Sprite包
脚本(获取图集中的图片Sprite)
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;
public class LayoutScript : MonoBehaviour
{
public GameObject equipPrefab;
private SpriteAtlas _spriteAtlas;
private void Start()
{
_spriteAtlas = Resources.Load("Equip Atlas");
Sprite[] sprites = new Sprite[_spriteAtlas.spriteCount];
_spriteAtlas.GetSprites(sprites);
// 方式一 GetSprites
foreach (var sprite in sprites)
{
equipPrefab.transform.Find("Image").GetComponent().sprite = sprite;
Instantiate(equipPrefab, transform, true);
}
// 方式二 GetSprite
foreach (var sprite in sprites)
{
string spriteName = sprite.name.Replace("(Clone)", "");
equipPrefab.transform.Find("Image").GetComponent().sprite = _spriteAtlas.GetSprite(spriteName);
Instantiate(equipPrefab, transform, true);
}
// 设置缩放
for (int i = 0; i < transform.childCount; i++)
{
transform.GetChild(i).GetComponent().localScale = new Vector3(1, 1, 1);
}
}
}
网格布局
Grid Layout Group
| 属性 | 功能 |
|---|
| Padding | 布局组边缘内的填充。 |
| Cell Size | 要用于组内每个布局元素的大小。 |
| Spacing | 布局元素之间的间距。 |
| Start Corner | 第一个元素所在的角。 |
| Start Axis | 沿哪个主轴放置元素。Horizontal 将在填充整行后才开始新行。Vertical 将在填充整列后才开始新列。 |
| Child Alignment | 用于布局元素的对齐方式(如果这些元素未填满可用空间)。 |
| Constraint | 将网格约束为固定数量的行或列以便支持自动布局系统。 |
内容大小适配器 (Content Size Fitter)
| 属性 | 功能 |
|---|
| Horizontal Fit | 如何控制宽度。 |
| Unconstrained | 不根据布局元素伸展宽度。 |
| Min Size | 根据布局元素的最小宽度来伸展宽度。 |
| Preferred Size | 根据布局元素的偏好宽度来伸展宽度。 |
| Vertical Fit | 如何控制高度。 |
| Unconstrained | 不根据布局元素伸展高度。 |
| Min Size | 根据布局元素的最小高度来伸展高度。 |
| Preferred Size | 根据布局元素的偏好高度来伸展高度。 |
水平布局
| 属性 | 功能 |
|---|
| Padding | 布局组边缘内的填充。 |
| Spacing | 布局元素之间的间距。 |
| Child Alignment | 用于子布局元素的对齐方式(如果这些元素未填满可用空间)。 |
| Control Child Size | 布局组是否控制其子布局元素的宽度和高度。 |
| Use Child Scale | 在为元素调整大小和进行布局时,布局组是否考虑其子布局元素的缩放。Width 和 Height 对应于每个子布局元素的 Rect Transform 组件中的 Scale > X 和 Scale > Y 值。 |
| Child Force Expand | 是否要强制子布局元素扩展以填充额外的可用空间。 |
垂直布局
| 属性 | 功能 |
|---|
| Padding | 布局组边缘内的填充。 |
| Spacing | 布局元素之间的间距。 |
| Child Alignment | 用于子布局元素的对齐方式(如果这些元素未填满可用空间)。 |
| Control Child Size | 布局组是否控制其子布局元素的宽度和高度。 |
| Use Child Scale | 在为元素调整大小和进行布局时,布局组是否考虑其子布局元素的缩放。Width 和 Height 对应于每个子布局元素的 Rect Transform 组件中的 Scale > X 和 Scale > Y 值。 |
| Child Force Expand | 是否要强制子布局元素扩展以填充额外的可用空间。 |