Unity 将Sprite打包进图集
前言:
打包图集是一个很简单的过程,但是如果没有这样的经验,可能不知道如何下手
本博客大概说一下打包流程,以及一些基本原理
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的次方的图片,这就代表着不规则的图片不能被压缩。
而通过图集这样的方式,可以很方便的将一组不规则的图片合成一张规则的图集,这样就可以进行相应的压缩操作。
Unity 将Sprite打包进图集相关推荐
- Unity中使用TexturePacker优化图集
转自:https://blog.csdn.net/Happy_zailing/article/details/87190150 TexturePacker是一款非常牛逼的打图集软件,是一款收费软件.这 ...
- 【Unity】Sprite Atlas功能讲解
目录 SpriteAtlas创建方法 1.Type: Maskter母版 Variant变体 2.Include Build: 勾选时运行游戏时自动加载入内存中,否则需要手动加载(使用到的时候才会加载 ...
- UGUI Sprite Packer:图集自动ETC1+Alpha
http://www.jianshu.com/p/a08b861af4e9 今天研究了一下UGUI的图集生成,具体步骤就是设置Texture的Packing Tag名称,并且Sprite Mode设置 ...
- [转]Asp.net 将js文件打包进dll 方法
Asp.net 将js文件打包进dll 方法 注:本文基于.NET 2.0 和 VS2005 我们在编写 Server Control 的时候难免要用到一些客户端脚本(javascript),如何把脚 ...
- 使用Maven Assembly plugin将依赖打包进jar
一个Eclipse的工程,在pom中配置了若干依赖,需要将pom中所有的依赖全部打包进一个jar包中,可以选择的方案有maven-assembly-plugin和fatjar.以前采用fatjar进行 ...
- Qt for Android / ios 将图片或文件打包进安装包中
概述 用 Qt 做程序开发,图片或翻译文件的引用有两种方式,一种是直接引用,本地图片, 一种是编译到资源文件中,其实直接添加在资源文件中是最方便的,不需要考虑文件存放的问题,但是这样可能带来的问题是启 ...
- DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...
先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布 ...
- 控件注册 - 利用资源文件将dll、ocx打包进exe文件(转)
很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样 ...
- java解析上的jar包里的pom_Maven引入本地Jar包并打包进War包中的方法
1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目根目录即pom.xml文件所在的同级目录,可以 ...
最新文章
- Windows10下安装配置 perl 环境
- wxWidgets:通过组合现有小部件制作新的可重用小部件
- 阿里一面 —— 什么是多线程?
- python中装饰器的参数与返回值
- TalkingData的Spark On Kubernetes实践
- 真香 | 谁说的 StringJoiner 不好!真香警告……
- mac 蓝牙 串口调试 助手(工具)
- STM32——SDIO进行SD卡读写测试
- 网络工程师(软考中级-华为认证)
- java 几何平均数_统计学——平均数
- 彩球滑梯java_玩过这些手机游戏的人都老了 那些曾经风靡一时的手机游戏大盘点(二)...
- 2-2 李宏毅2021春季机器学习教程-类神经网络训练不起来怎么办(一)局部最小值与鞍点(Local Minima and Saddle Point)
- 针对屏幕显示模糊/清晰度不够的3种调节途径
- SQL中将查询结果赋值给变量
- 计算机管理映像路径,win10系统任务管理器查看映像路径的详细方案
- GNU/Linux 初学之旅(转)
- MySQL+Mybatis
- 计算机选择位置不能选桌面,win7电脑桌面的图标无法拖动位置了怎么办?
- [PTA]实验3-4 统计字符
- 如何提高福禄克DTX-1800的测试余量