私がやりたいこと:
スプライトシートを使用して、ゲーム内のすべての敵をロードしたいと思います。それらは、善良な人によって破壊されたとき、または画面から消えたときに削除する必要があります。私には6〜7人の敵がいて、そのうちのいくつかはアニメーションです。何度も再利用します。それらをメモリから効果的にロードおよびアンロードしたいと思います。
私がしていること:
最初にスプライトシートをロードします。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Obstacles.plist"];
CCSpriteBatchNode *obstaclesspriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"Obstacles.pvr.ccz"];
[self addChild:obstaclesspriteSheet];
私は悪者を扱うBadBoysと呼ばれるクラスを持っています。悪者を作成するたびに、クラスのインスタンスを作成します。クラス内でスプライトを作成し、レイヤーに追加します。
baddies[x] = [[BadBoys alloc] init];
//INSIDE THE CLASS
baddie = [CCSprite spriteWithSpriteFrameName:@"cannonball-hd.png"];
スプライトが破壊されたらレイヤーからスプライトを削除し、クラスのインスタンスを解放します。
[self removeChild:[baddies[x] getBaddie] cleanup:YES]; //getBaddie returns the sprite
[baddies[x] release];
私はこれがそれを行うための良い方法であることを知っています。私が知りたいのは、これがこれを行う最も効率的な方法であるかどうかです。画像を読み込む別の方法を考えました。
CCTextureCacheに非同期で画像をロードします。次に、キャッシュのテクスチャを使用してスプライトを作成します。生きているすべての敵を保持するNSMutableArrayに追加します。それから、もう必要なくなったら、次の方法で破壊できます。
CCTexture2D * texture = spriteName.texture;
[spriteName.parent removeChild:spriteName cleanup:YES];
[[CCTextureCache sharedTextureCache] removeTexture:texture];
[backgroundSprites removeObject:spriteName];
これはより良い方法ですか?あなたの意見や提案を共有してください。ありがとう。