Unity2D Sprite Packer用法介绍
想充分利用图片空间?
我们用来做sprite的图片通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了。
如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图片上的空间尽量利用得充实一点。这时候,我们就需要一个制作图集的工具。
其实这个功能要自己写也不难的,只是把各个sprite上的图片做copy pixel处理,然后计算一个矩形范围,把所有拾取的图片像素按一定的规律放在一张图片上面。
不过这些较为底层的东西很多人都会害怕而选择逃避,所以有很多直接可以用的工具,比如NGUI的较新版本就有这个自动图集的功能了,或者有很多图集制作的软件。
Unity3d在推出2D功能的同时,也附带了这个制作图集的工具,也就是Sprite Packer了。
Sprite Packer的用法
下面简单的介绍一下Sprite Packer的用法:
Editor Setting设置
在使用这个功能之前,我们先要到editor setting里面把Sprite Packer打开:

然后打开sprite packer的窗口(Window/Sprite Packer(Developer Preview)):
这个就是sprite packer的窗口了,主要的操作,其实就是左上角的这个pack的按钮了。不过现在我们按这个按钮,不会有任何东西出现。

添加Tag=enemys
在我们的项目文件夹里面,我放了几个已经做好切割的sprite

选择这些sprite,把属性里面的Packing Tag输入一个名字。这里我所有sprite都输入了enemys:

现在再来点pack按钮,就会出现了东西了。这就是把刚才那对sprite拼起来的图集了。

添加Tag=players
假如我们把主角土豆人的Packing Tag改成players(或者其他和之前不一样的名字)

我们再来pack,就会看到,土豆人在图集里面消失了。

Tag切换
在这个图集选择里面,我们可以看到刚才新增加的players类别

选择players,又看到土豆人了。这是因为这个sprite packer做图集是根据Packing Tag标签来做的,它会把同样标签的物体分成一类,然后制作。

sprite的使用
实际上我们能做的操作真的不多,这个过程是自动完成的。完成之后,我们在项目面板下面选择sprite,在图集里面相应的sprite会变成高亮显示。

相关知识
既然这个功能是这样自动化,那为什么一开始是禁用状态,需要我们手动去editor setting里面设置打开呢?
原因是这个功能在unity打开工程的时候会先花一些时间运算图集,如果你需要计算的sprite很多,那么打开就会慢一些。
计算好的图集会放在缓存文件夹Project\Library\AtlasCache里面,如果把这里的内容删掉,那么unity将会再次运算图集。
然后如果选择了制作图集,那么sprite的原图就不会经过压缩以便拾取像素制作图集了。
说明
本文写作内容基于Unity4.3.0版本,但Sprite Packer的核心思路仍适用于Unity4.3更高版本和Unity5.x
本文转载自:http://liweizhaolili.blog.163.com/blog/static/1623074420131151303310/
Unity2D Sprite Packer用法介绍的更多相关文章
- Unity3d的Sprite Packer用法介绍
我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了.如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图片上的空间尽 ...
- 【Unity3D游戏开发】之Sprite Packer使用方法 (九)[转]
前置说明: 我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了.如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图 ...
- Unity Sprite Packer 问题集合
介绍 今天突发奇想用了下sprite packer 这个功能,基本用法网上教程一堆一堆的,这里就不赘述了. 在使用sprite packer过程中遇到一些问题,然后各种百度不到答案,最后和谐上网找到了 ...
- 好压(HaoZip)的命令行模式用法介绍
好压压缩软件,又叫“2345好压”,是一款国产的优秀压缩软件,目前是免费的,据官网介绍,该软件永久免费.官网地址:http://haozip.2345.com/ 本文主要对该软件的命令行模式用法进行介 ...
- sql事务(Transaction)用法介绍及回滚实例
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)
即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...
- Oracle CASE WHEN 用法介绍[Z]
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- LinqToXml高级用法介绍
LinqToXml高级用法介绍 一.函数构造 什么是函数构造?其是指通过单个语句构建XML树的能力. 那么它有什么作用呢? 作用1.用单个表达式快速创建复杂的XML树 见实例代码CreateXml( ...
随机推荐
- 简析android消息模型
android总结系列 一.消息系统构成要素和基本原理 l 消息队列 l 发送消息 l 消息读取 l 消息分发 l 消息循环线程 消息系统必须要依赖一个消息循环线程来轮询自己的消息队列,如果 ...
- 【原】开发路上疑难BUG调试记录
之前遇到棘手的BUG总是在处理过后就不管了,导致后面碰到相同问题后重复工作太多.现专门开辟一篇日志以记录接下来一路上比较棘手的“坑”的修复历程: [C++篇] 1.mt.exe : general e ...
- iOS 删除NSString中特定字符
+(NSString *) stringDeleteString:(NSString *)str { NSMutableString *str1 = [NSMutableString stringWi ...
- iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)
前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...
- 让div中的table居中
div 标签上写 style="text-align:center" div中的table中写 style="margin:auto;" <table ...
- img标签使用默认图片的一种方式
基于html5提供的onerror这个时间属性.
- .net串口通信
背景: 前一段时间需要写一个向蓝牙模块发消息的功能. 对蓝牙的机制不太了解,所以一直在查资料, 但始终没找到我需要的东西,还误以为需要配套的一套开发模板和开发包, 偶然间发现只需要简单的串口通信,并且 ...
- 【nginx】常见的陷阱和错误
很多人都可以碰到一个陷阱.下面我们列出,我们经常看到的问题,以及解释如何解决这些问题.在Freenode上的#nginx IRC频道这些讨论很频繁. 1.权限 从来不要使用777权限,查看目录的权限 ...
- try catch finally 用法
trycatchfinally 1.将预见可能引发异常的代码包含在try语句块中.2.如果发生了异常,则转入catch的执行.catch有几种写法:catch这将捕获任何发生的异常.catch(Exc ...
- xamarin.android 给View控件 添加数字提醒效果-BadgeView
本文代码从java项目移植到.net项目 java开源项目:https://github.com/jgilfelt/android-viewbadger using System; using S ...