在cocos2d里面,为了使你的游戏获得最佳性能,你需要把许多小的sprite图片组合到一张大图里面,这张大图就叫做sprite sheet。

如果你使用cocos2d已经有一段时间了的话,你可能已经使用过了一款叫做Zwoptex的工具来帮你生成sprite sheet。Zwoptex是一个非常棒的工具–我在我的很多程序里面使用它,而且确实帮我节省了很多时间。

然后,这里有一款新的工具,叫做Texture Packer.它类似于Zwoptex,也能创建sprite sheet,但是它还有一些非常方便的、很神奇的特性。

这 篇文章将以一种教程的形式,讲述如何在cocos2d游戏开发使用Texture Packer,同时,你还将学习到如何使用像素格式(pixel formats)、Texture Packer 如何智能地让你的游戏加载速度更快,运行更流畅,而且还能够在游戏界面看起来很不错的前提下使用尽可能少的内存。

澄 清:我在发博客之前就从Texture Packer这个工具的作者手中拿到了license key。我当时并没有保证我会发一篇博文来回报他,但是,在我使用这个工具一段时间之后,它确实为我的应用程序减少了很多需要加载的内存,因此我爱上了 这款工具。所以,我想让你们都了解它。

这篇教程是为那些熟悉cocos2d的人写的。如果你对cocos2d完全陌生的话,你应该从“怎样做一个简单的iphone应用程序”系列和其它一些cocos2d的教程开始。(目前这些链接依然是e文,但随着我翻译进度的前进,这些也会相应的更新。)

开始

首先,确保你安装了最新版本的cocos2d(在写作这篇文章的时候,版本号是 Cocos2D v0.99.5-rc1,在翻译这篇文章的时候,已经是 cocos2d-iphone-1.0.0-beta.tar.gz了)。获得最新版本非常重要,因为新版本里面增加了对一些新的图片格式的支持,而这恰恰是这篇文章后面要用到的。

一旦你安装完之后,你就可以启动XCode,然后使用cocos2d应用程序模板来新建一个工程并把它命名为TextureFun。

下一步,你需要一些图片来制作sprite sheets。你可以下载这些我收集来的样例图片,然后解压缩,并把整个解压缩后的目录拖到你的TextureFun工程的一个子文件夹下面,如下图所示:

好,现在你拥有一个工程模板和一些样例图片以,是时候使用TexturePacker来制作spritesheet了!

使用TexturePacker来创建spritesheet

你需要做的第一件事情就是下载 Texture Packer的免费版本。请注意,你并不需要购买任何东西,对于这篇教程来说你只需要免费版本就足够了。

当你下载完之后双击,然后点击“TexturePacker.mpkg”,接下来就会弹出一个窗口,然后按照提示一步步安装在你的mac上。

在你完成安装之后,在你的Application文件夹下面找到它并运行。当你看到第一个提示窗口出现的时候,选择“ Use Essentia”(免费版本)继续。

现在,点击工具栏上的“Add Folder”按钮,然后选择TextureFun\Art\sprites文件夹。Texture Packer将会加载图片并且智能地把这些图片布局在spritesheet中,如下图所示:

另 一方面,你能够看到所有导入到纹理集(Texture Atlas)中的图片,当你选中某一个的时候会看到有一个边框–另一个非常方便的功能!你也能够把 鼠标停留在精灵(sprite)上面,看它是否创建走样(alias)(走样(alias)指那些被裁剪(cropping)之后的图像看起来实际上是一 样的)。如下图所示:

顺 便说一下通过点击“Add Folder”按钮来添加图片的一些注意事项。首先,当你像这样通过增加文件夹的方式来增加精灵后,Texture  Packer并不是对每一个精灵增加一个索引(reference),而是对整个文件夹增加了一个索引。这意味着,当你以后向这个文件夹中增加精灵之后, 下一次你运行Texture Packer的时候,它会重新根据文件夹下面的所有的精灵来创建spritesheet–多么方便啊!

同时,你也不需要非得把所有的精灵都放在同一个根文件夹下面,你可以按照自己的方式把这些精灵放在不同的子目录下(比如sprites\animals,sprites\monsters),之后当你从cocos2d中引用它们的时候只需指定相对路径即可。

最后,需要注意的是,你可以包含多个精灵文件夹–这也是一个非常方便的功能,尤其是在你的游戏非常大的时候,你可以为每一个关卡制作一个spritesheet。