我们正在开发一款拥有大量图像资源的游戏,我们希望将应用程序大小保持在30MB以下,因此决定在zip文件中下载图像。
第一个场景有50个SKSpriteNode对象和426个纹理和动画图像,我们无法创建纹理图集,因为我们的图像不在束中。
从iOS8我们有[SKTextureAtlas atlasWithDictionary:]
,可以从不在捆绑资源中的图像编译atlasc文件,但我们也必须支持iOS7。
当我们使用[UIImage imageWithContentsOfFile:imagePath]
和[SKTexture textureWithImage:textureImage]
方法加载426张图片时,我们的应用会关闭,因为内存使用量很大。
代码:
for (int i=0; i <= numImages-1; i++) {
NSString *textureName = [NSString stringWithFormat:@"texture_%05d", i];
SKTexture *texture = [SKTexture textureWithImage:ImagePath(textureName)];
[frames addObject:texture];
}
之后:
SKAction *action = [SKAction animateWithTextures:frames timePerFrame:kAnimationFrameTime resize:YES restore:YES];
[node runAction:action withKey:kAnimationActionKey];
ImagePath宏返回文档目录中给定图像的绝对路径。
是否有最佳做法从SpriteKit中的Documents目录加载大量动画图像?