0
点赞
收藏
分享

微信扫一扫

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现


自动布局组件

  • ​​效果​​
  • ​​Hierarchy视图​​
  • ​​Canvas​​
  • ​​Scroll View​​
  • ​​预设物(Equip)​​
  • ​​宽高比适配器 (Aspect Ratio Fitter)​​
  • ​​图集(Equip Atlas)​​
  • ​​创建图集​​
  • ​​脚本(获取图集中的图片Sprite)​​
  • ​​网格布局​​
  • ​​Grid Layout Group​​
  • ​​内容大小适配器 (Content Size Fitter)​​
  • ​​水平布局​​
  • ​​垂直布局​​

效果

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_layout

Hierarchy视图

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_layout_02

Canvas

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_c#_03

Scroll View

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_layout_04

预设物(Equip)

宽高比适配器 (Aspect Ratio Fitter)

属性

功能

Aspect Mode

如何调整矩形的大小来强制实施宽高比。

​None​

不让矩形适应宽高比。

​Width Controls Height​

根据宽度自动调整高度。

​Height Controls Width​

根据高度自动调整宽度。

​Fit In Parent​

自动调整宽度、高度、位置和锚点,使矩形适应父项的矩形,同时保持宽高比。父矩形中可能有一些空间不会由此矩形覆盖。

​Envelope Parent​

自动调整宽度、高度、位置和锚点,使矩形覆盖父项的整个区域,同时保持宽高比。此矩形可能比父矩形延伸更广。

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);
}
}
}

网格布局

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_layout_08

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​

根据布局元素的偏好高度来伸展高度。

水平布局

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_c#_09

属性

功能

Padding

布局组边缘内的填充。

Spacing

布局元素之间的间距。

Child Alignment

用于子布局元素的对齐方式(如果这些元素未填满可用空间)。

Control Child Size

布局组是否控制其子布局元素的宽度和高度。

Use Child Scale

在为元素调整大小和进行布局时,布局组是否考虑其子布局元素的缩放。Width 和 Height 对应于每个子布局元素的 Rect Transform 组件中的 Scale > X 和 Scale > Y 值。

Child Force Expand

是否要强制子布局元素扩展以填充额外的可用空间。

垂直布局

Unity(三十一):自动布局组件「网格、水平、垂直布局」「宽高比、内容大小适配器」 - 物品栏实现_游戏引擎_10

属性

功能

Padding

布局组边缘内的填充。

Spacing

布局元素之间的间距。

Child Alignment

用于子布局元素的对齐方式(如果这些元素未填满可用空间)。

Control Child Size

布局组是否控制其子布局元素的宽度和高度。

Use Child Scale

在为元素调整大小和进行布局时,布局组是否考虑其子布局元素的缩放。Width 和 Height 对应于每个子布局元素的 Rect Transform 组件中的 Scale > X 和 Scale > Y 值。

Child Force Expand

是否要强制子布局元素扩展以填充额外的可用空间。


举报

相关推荐

0 条评论