最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
unity3d editor sprite 分割后的结果保存
之前有人留言希望我介绍一下 Sprite Packer 的用法,那么我就顺便介绍一下 Unity3D Editor 中 Sprite 分割后的结果保存相关内容。
制作图集的必要性
我们用于制作 Sprite 的图片,通常会存在大量空白区域。在完成 Sprite 绘制后,这些空白部分很可能就失去了作用。为了避免资源浪费,我们可以将各个 Sprite 制作成图集,充分利用图片上的空间。这时,就需要一个制作图集的工具。
其实,实现制作图集的功能并不复杂。其原理是对各个 Sprite 上的图片进行像素复制处理,计算出一个矩形范围,然后按照一定规律将所有拾取的图片像素放置在一张图片上。不过,这些较为底层的操作让很多人望而却步,因此有许多现成可用的工具。例如,NGUI 的较新版本就具备自动图集功能,此外还有很多专门的图集制作软件。
Unity3D 的 Sprite Packer 工具
Unity3D 在推出 2D 功能的同时,附带了制作图集的工具——Sprite Packer。下面详细介绍它的用法:
开启 Sprite Packer
在使用该功能之前,需要先在 Editor Setting 中打开 Sprite Packer。
打开 Sprite Packer 窗口
打开 Sprite Packer 窗口后,我们会看到其主要操作按钮位于左上角的“Pack”按钮。但此时点击该按钮,不会有任何结果显示。
为 Sprite 设置 Packing Tag
在项目文件夹中,准备几个已经完成切割的 Sprite。选择这些 Sprite,在其属性中输入一个 Packing Tag 名称。这里我们将所有 Sprite 的 Packing Tag 都设置为“enemys”。再次点击“Pack”按钮,就会生成将刚才那些 Sprite 拼接起来的图集。
不同 Packing Tag 的效果
如果将主角土豆人的 Packing Tag 改为“players”(或者其他与之前不同的名称),再次点击“Pack”按钮,会发现土豆人在原来的图集里消失了。在图集选择界面中,可以看到新增加的“players”类别。选择“players”类别,就能再次看到土豆人。这是因为 Sprite Packer 制作图集是依据 Packing Tag 标签进行分类的,它会将具有相同标签的物体归为一类并制作成图集。
图集制作的自动化及相关情况
实际上,我们在这个过程中能进行的手动操作并不多,整个图集制作过程是自动完成的。完成图集制作后,在项目面板中选择 Sprite 时,图集中相应的 Sprite 会高亮显示。
为何默认禁用 Sprite Packer
既然这个功能如此自动化,为什么一开始它是禁用状态,需要我们手动在 Editor Setting 中打开呢?原因在于,Unity 在打开工程时会先花费一些时间来运算图集。如果需要计算的 Sprite 数量较多,工程打开的速度就会变慢。计算好的图集会存放在缓存文件夹“Project\Library\AtlasCache”中。如果删除该文件夹中的内容,Unity 将会再次进行图集运算。另外,如果选择制作图集,Sprite 的原图将不会经过压缩,以便拾取像素用于制作图集。