Unity 将Sprite打包进图集

您所在的位置:网站首页 unity打包文件比原文件还大怎么办 Unity 将Sprite打包进图集

Unity 将Sprite打包进图集

2023-09-09 19:24| 来源: 网络整理| 查看: 265

前言:

打包图集是一个很简单的过程,但是如果没有这样的经验,可能不知道如何下手

本博客大概说一下打包流程,以及一些基本原理

1、为什么要打包图集

首先要了解一点,在UGUI中即使你什么都不干,在项目打包时,Unity也会自动将你的一些小图片资源合在一张大图里面,也就是合成一张图集,但是这种默认的方式,会产生大量的Draw Call,对于性能消耗比较大

而NGUI则是开发者必须要将图片资源打包成图集,然后才能使用这些图片资源

因此无论是UGUI还是NGUI,掌握图集的打包都是非常重要的

2、打包开始前

在合成图集开始前,先了解一下Sprite

首先,在Unity中,Sprite的生成是由Texture2D加一个轴点以及一个矩形来构成的,这就是Sprite为什么作为2D场景元素存在的原因,有一个轴点可以作为坐标轴点,而其矩形可以用来生成网格,处理碰撞体这些东西:

点击任一一张Sprite,可以在Inspect面板看到下面这些信息

在这里插入图片描述 通过图中可以看出有下面的属性:

Texture Type:这个图片的类型,和你需要的功能有关Sprite Mode:精灵模式是单一还是一张图集Pixels Per Unit:单位距离内的像素点,一般默认100是有些大的,可以通过修改该参数来改变在世界内的大小Mesh Type:网格类型,一般不需要调整Extrude Edges:选择此值以基于像素阿尔法值生成网格。Unity 生成的网格通常遵循Sprite的形状Pivot:用来确定生成锚点位置 3、图集打包流程

第一种方式:

注意:

根据官方文档描述,该方式在 Unity 2020.1 及更高版本中已弃用,并且将不再作为Sprite Packer 模式的选项提供

在Project Setting中找到Editor,然后在其中的Sprite Packer选择Always Enabled(Legacy Sprite pakcer): 在这里插入图片描述 接下来就可以点击需要合成图集的Sprite,会发现多出一个Packing Tag,我们可以在后面的输入框内输入一个名字,这个名字代表的是一类图片,这个名字相同的所有图片会被打包进入一张图集

在这里,我把三个Sprite命名为Test 在这里插入图片描述

完成上面的设置后,我们可以点击导航栏的Windows,在其中找到2D,然后选择Sprite Packer后点击Pack开始打包,等待打包程序执行完成后,就可以在这个面板中查看到Sprite合成图集后的效果:

在这里插入图片描述

注意:

如果你完成上述步骤,没有发现合并的图集,可以点击Pack进行更新,这样就可以看到刚刚添加的图片

第二种方式

通过在Project面板右键选择Create然后在二级菜单中选择Sprite Atlas创建一个图集:

然后点击图集就可以在Inspect面板添加需要打包进图集的Sprite: 在这里插入图片描述 通过这样的方式打包图集,相比于第一种,可以控制打包后的图集的大小、压缩方式等等,有比较强的定制性。

4、为何打包图集可以提升性能表现

1,批处理 要了解这样的原因,首先需要理解Draw Call与Batches的概念,

关于Draw Call与Batche

Draw Call的知识可以查看之前的文章:Unity 渲染流水线:CPU与GPU合作创造的艺术关于Batches(批处理),即使你不了解,通过名字也可以理解,这是一种通过成批来处理的技术,总的来说,这个数值越小,对于硬件设备性能越友好

如果没有打包成为图集,如果场景中有三个Sprite,会产生三个Batches,如图,场景中有三个没有经过图集处理的Sprite,运行场景,发现产生了5个Batches(天空盒占一个,另外一个相机处理产生): 在这里插入图片描述

接下来将三个Sprite打包进一个图集,可以很明显的发现,只产生了一个Batches,三个Sprite是通过一个批次提交的Draw Call,这样就可以减少Draw Call,提升性能表现: 在这里插入图片描述

2,方便图集的压缩

对于图集打包的另一特点就是图片资源的压缩,在Unity中,只能压缩图片大小为2的次方的图片,这就代表着不规则的图片不能被压缩。 而通过图集这样的方式,可以很方便的将一组不规则的图片合成一张规则的图集,这样就可以进行相应的压缩操作。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3