1

CCSprite同じ画像を使用していくつかの が必要だとします。次の2つの解決策を考えることができます:

  1. 画像は別ファイル「bg.png」

    CCSprite *image1 = [CCSprite spriteWithFile:@"bg.png"];
    CCSprite *image2 = [CCSprite spriteWithFile:@"bg.png"];        
    
  2. 画像はスプライトシート「bg_sheet.png」にあります

    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bg_sheet.png"];
    

    それで

    CCSprite *image1 = [CCSprite spriteWithSpriteFrameName:@"bg.png"];
    CCSprite *image2 = [CCSprite spriteWithSpriteFrameName:@"bg.png"];
    

私の質問は次のとおりです。

  • ケース 1 ではイメージがメモリに 2 回読み込まれるのに対し、ケース 2 では 1 回だけ読み込まれると思います。私は正しいですか?
  • それでは、スプライトシートを使用する方が常に良いということですか?
  • それを達成するための他のより良い方法を見逃しましたか?
4

1 に答える 1

2
  1. あなたは間違っている。どちらの場合も、イメージは一度だけメモリに配置されます。コードを確認できspriteWithFile:ます。スプライト フレーム キャッシュでスプライト フレームを見つけようとし、必要なフレームが見つからない場合にのみロードします。

  2. スプライトシートを使用すると、メモリを節約できます。たとえば、サイズが 129x129 の画像の場合、サイズが 256x256 のテクスチャが作成されます。しかし、そのような画像を 1 つのスプライトシートに追加することはできますが、作成される大きなテクスチャは 1 つだけです (つまり、1024x1024 または 2048x2048 のスプライトシートがあり、同じサイズのテクスチャが 1 つしかありません)。

于 2012-08-31T11:22:12.123 に答える