UGUI 图集打包
1. 为什么要进行图集打包
图集打包的作用是,减少 DrawCall,提高性能;
2. NGUI和UGUI 图集的不同
(1)NGUI 必须先打出图集,然后开始做界面,我们始终都要考虑我们的UI图集,如图集的大小会不会超过 1024K,图集如何规划 ;
(2)UGUI,开发者不需要去管理自己的图集,做界面的时候只用小图,而在最终打包的时候,引擎会把我们的小图打包成一张大的图集 ;
3. UGUI图集打包的两种方式
【3.1】 sprite packer 旧版本的图集打包方式:sprite packer
第一步:设置 Mode: Always Enabled ( Legacy Sprite Packer)
Edit---->ProjectSetting------->Editor--------->Mode
[Mode 各个选项的说明]
(1)disabled不启用、
(2)enabled for builds(legacy sprite packer):打包时启用(针对sprite packer这种打包方式)
(3)always enabled(legacy sprite packer):总是启用(针对sprite packer这种打包方式)
(4)enabled for builds:打包时启用(针对sprite Atlas这种打包方式)
(5)always enabled(针对sprite Atlas这种打包方式)
第二步:设置 tag 和 Mesh Type
只有设置了tag值才会进行打包,相同的tag值打包到同一个图集,不同的Tag值打包为不同的图集;
Mesh Type有两个可选项:
(1)Full Rect:会把所有的小图按照矩形的方式来排列,如果宽高不一样的图片,它们会自动补起。
(2)Tight: 是紧密打包方式,也就是尽可能的把图片都打包在图集上,更省空间。
第三步:点击Pack,完成打包
Window----->2D------->Sprite Packer 点击左上角的 pack 就可以啦,完成!
补充说明:
(1) 放在Resources文件夹中的图片,Unity不会打包到图集中!
(2) 打包好的图集会放在缓存文件夹Project\Library\AtlasCache里面!
【3.2】 新版本的图集打包方式:sprite atlas
sprite Atlas是2017版本之后的图集打包方式, Sprite Atlas 针对旧版本的图集打包系统Sprite Packer在性能和易用性上的不足,进行了全面改善。
第一步:设置 Mode: Always Enabled
Edit---->ProjectSetting------->Editor--------->Mode
第二步: 在Project 面板中右键 create -> sprite atlas
第三步: 分配资源给 sprite atlas , 完成!
可以将文件夹,纹理或精灵分配给Sprite Atlas。可以将整个文件夹分配给Sprite Atlas资产,该文件夹中的所有纹理(包括子文件夹)都将被打包。
新功能:图集Variant(变种)的使用
Variant,就是指原有图集的一个变种。它会复制原图集的贴图,并根据一个比例系数来调整复制贴图的大小。通常用于为高分辨率和低分辨率的屏幕准备不同的图集。因为如果只准备一套高分辨率的图集,在低分辨率的设备上占用内存过多。反之,如果只准备一套低分辨率图集,在高分辨率的设备上就会模糊。
如下图,SpriteAtlas 1.spriteatlas是新建的一个低清图集,在检视窗口中将Type设为Variant,Master Atlas设为SpriteAtlas。这里为了与原图进行更明显的对比,将Scale设为0.1, 点击Pack Preview。
新功能:图集访问
Sprite Atlas作为一种资源开放给用户,可以在脚本中访问,还可以通过名字获取图集中的精灵。这样用户可以更加直接地随时编辑图集,而且不用去单独加载图集中的每个精灵。
4. 参考资源:
(1)UGUI研究院之全面理解图集与使用(三) -------------作者:雨松MOMO
(2)unity中sprite packer、sprite Atlas和sprite mask ----------作者:差点忘记打铁了
(3)Unity2017新功能Sprite Atlas详解----------------作者:Mr_传奇