栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

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

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

自动布局组件
    • 效果
    • Hierarchy视图
      • Canvas
      • Scroll View
    • 预设物(Equip)
      • 宽高比适配器 (Aspect Ratio Fitter)
    • 图集(Equip Atlas)
      • 创建图集
      • 脚本(获取图集中的图片Sprite)
    • 网格布局
      • 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是否要强制子布局元素扩展以填充额外的可用空间。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号