SpriteKit的纹理集

2018-07-28  本文已影响101人  KevinTing

SpriteKit纹理集

1、SpriteKit纹理集的使用非常简单,只需要将需要打包的图片放到一个文件夹,以.atlas为后缀命名,然后将文件夹拖入Xcode中即可:


image.png

项目中还可以设置纹理集的格式还有最大尺寸,这里最大尺寸有2048X2048和4096X4096两个选项,一般4096是移动设备上面OpenGL ES支持的最大尺寸。在代码中使用纹理集也很简单:

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"monster"];
SKTexture *f1 = [atlas textureNamed:@"monster-walk1.png"];
SKTexture *f2 = [atlas textureNamed:@"monster-walk2.png"];
SKTexture *f3 = [atlas textureNamed:@"monster-walk3.png"];
SKTexture *f4 = [atlas textureNamed:@"monster-walk4.png"];
NSArray *monsterWalkTextures = @[f1,f2,f3,f4];

2、纹理集的工作方式:实际上Xcode在打包的时候会帮你把.atlas文件夹中的所有图片合图,图片的大小会小于等于上图中设置的最大尺寸,如果图片比较多,一个2048X2048(假设设置的最大尺寸是2048X2048)的大图放不下,那么会合成多张大图。与此同时,还会生成一个plist文件描述原来的图片在合图中的位置等信息。Xcode的这种工作方式在苹果的OpenGLES_ProgrammingGuide中有下面的描述:


说的意思是Xcode会创建一个同名的.atlasc文件夹在包内,这个文件夹里面包含了一个或多个合图,外加一个.plist描述文件。苹果直接说这个特性虽然是为SpriteKit开发的,但是你不用SpriteKit也可以使用这个合图,比如说OpenGL ES。

3、直接编译工程,打开bundle文件夹,确实有同名的.atlasc文件夹,下面有合图的jpg文件,还有.plist文件:

image.png
.plist文件里面包括各个图片的位置信息,与TexturePacker输出的格式文件非常相似,我们大可以利用这一点在其他地方使用纹理集,不一定非要限制于SpriteKit,只是需要写一些解析的方法就行了。至于说怎么解析,可以参考我之前的文章SpriteKit导入TexturePacker导出的纹理集类似的方式即可。

参考:
https://developer.apple.com/documentation/spritekit/sktextureatlas?language=objc
https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesForWorkingWithTextureData/TechniquesForWorkingWithTextureData.html#//apple_ref/doc/uid/TP40008793-CH104-SW1

上一篇 下一篇

猜你喜欢

热点阅读