多くの画像アセットを含むゲームを開発しており、アプリのサイズを 30MB 未満に抑えたいため、画像を zip ファイルでダウンロードすることにしました。最初のシーンには、50 個の SKSpriteNode オブジェクトと、テクスチャとアニメーション用の 426 個の画像があり、画像がバンドルに含まれていないため、テクスチャ アトラスを作成できません。iOS8[SKTextureAtlas atlasWithDictionary:]
から、バンドル リソースにないイメージから atlasc ファイルをコンパイルできるようになりましたが、iOS7 もサポートする必要があります。[UIImage imageWithContentsOfFile:imagePath]
メソッドとメソッドを使用して 426 枚の画像をロードすると[SKTexture textureWithImage:textureImage]
、メモリ使用量が多いため、アプリがシャットダウンしました。
コード:
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 ディレクトリからアニメーション用に大量の画像をロードするベスト プラクティスはありますか?