Unity 将Sprite打包进图集

前言:

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

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

1、为什么要打包图集

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

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

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

2、打包开始前

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

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

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

Unity 将Sprite打包进图集_第1张图片
通过图中可以看出有下面的属性:

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

3、图集打包流程

第一种方式:

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

在这里,我把三个Sprite命名为Test
Unity 将Sprite打包进图集_第2张图片

完成上面的设置后,我们可以点击导航栏的Windows,在其中找到2D,然后选择Sprite Packer,可以在这个面板中查看到Sprite合成图集后的效果:

注意:

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

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

要了解这样的原因,首先需要理解Draw CallBatches的概念,

关于Draw Call与Batche

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

如果没有打包成为图集,如果场景中有三个Sprite,会产生三个Batches,如图,场景中有三个没有经过图集处理的Sprite,运行场景,发现产生了5个Batches(天空盒占一个,另外一个相机处理产生):
Unity 将Sprite打包进图集_第3张图片

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

你可能感兴趣的:(unity基本函数方法,Unity,图集,Sprite,Sprite,packer)