自动布局组件
- 效果
- Hierarchy视图
- Canvas
- Scroll View
- 预设物(Equip)
- 宽高比适配器 (Aspect Ratio Fitter)
- 图集(Equip Atlas)
- 创建图集
- 脚本(获取图集中的图片Sprite)
- 网格布局
- Grid Layout Group
- 内容大小适配器 (Content Size Fitter)
- 水平布局
- 垂直布局
效果
Hierarchy视图
Canvas
Scroll View
预设物(Equip)
宽高比适配器 (Aspect Ratio Fitter)
属性 | 功能 |
Aspect Mode | 如何调整矩形的大小来强制实施宽高比。 |
| 不让矩形适应宽高比。 |
| 根据宽度自动调整高度。 |
| 根据高度自动调整宽度。 |
| 自动调整宽度、高度、位置和锚点,使矩形适应父项的矩形,同时保持宽高比。父矩形中可能有一些空间不会由此矩形覆盖。 |
| 自动调整宽度、高度、位置和锚点,使矩形覆盖父项的整个区域,同时保持宽高比。此矩形可能比父矩形延伸更广。 |
Aspect Ratio | 要强制实施的宽高比。这是宽度除以高度的比值。 |
图集(Equip Atlas)
创建图集
脚本(获取图集中的图片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<SpriteAtlas>("Equip Atlas");
Sprite[] sprites = new Sprite[_spriteAtlas.spriteCount];
_spriteAtlas.GetSprites(sprites);
// 方式一 GetSprites
foreach (var sprite in sprites)
{
equipPrefab.transform.Find("Image").GetComponent<Image>().sprite = sprite;
Instantiate(equipPrefab, transform, true);
}
// 方式二 GetSprite
foreach (var sprite in sprites)
{
string spriteName = sprite.name.Replace("(Clone)", "");
equipPrefab.transform.Find("Image").GetComponent<Image>().sprite = _spriteAtlas.GetSprite(spriteName);
Instantiate(equipPrefab, transform, true);
}
// 设置缩放
for (int i = 0; i < transform.childCount; i++)
{
transform.GetChild(i).GetComponent<RectTransform>().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 | 如何控制宽度。 |
| 不根据布局元素伸展宽度。 |
| 根据布局元素的最小宽度来伸展宽度。 |
| 根据布局元素的偏好宽度来伸展宽度。 |
Vertical Fit | 如何控制高度。 |
| 不根据布局元素伸展高度。 |
| 根据布局元素的最小高度来伸展高度。 |
| 根据布局元素的偏好高度来伸展高度。 |
水平布局
属性 | 功能 |
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 | 是否要强制子布局元素扩展以填充额外的可用空间。 |