2012-02-20 16 views
0

私のゲームでは、レベルごとに多くのplistを持っています。 私は以前frameCache、フレームキャッシュにあるファイルを確認してください

for(int i=1;i<stage;i++) 
    [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"candys%i.plist",i]]; 

をアンロードするためにこれを使用していますが、しばらくした後、ゲームが少し遅くなっているようです。 candy1がキャッシュにspritesheetでスプライトであるとREALで をロードされている

sprite = [CCSprite spriteWithSpriteFrameName:[NSString stringWithFormat:@"candy%i.png",1]]; 

:私も、リアルタイムでこのような画像をロードしています

  1. 時間 - 1秒に何回も意味します。 それは悪いことができますか?スプライトをスプライトシートから何秒も何度も取得するためにメモリをロードしていますか?私はそれを事前に定義しなければならないのですか?

    多くのありがとう。

+0

どのように動作するのですか? – Curnelious

答えて

0

個々のスプライトフレームをロード/アンロードする必要はありません。スプライトフレームはテクスチャを参照します。通常、これは多くの異なるスプライトフレームが使用するテクスチャアトラスになります。スプライトフレーム自体は、おそらく16バイトのデータです。テクスチャは16メガバイトまでです。

テクスチャアトラスと関連するすべてのスプライトフレームを削除しない限り、頻繁にスプライトフレームの割り当てを解除して読み込むため、パフォーマンスが低下します。これを毎秒複数回行うと、スプライトフレームをロード/アンロードするだけで多くの時間を無駄にしてしまいます。

経験則:シーン全体を前面に読み込み、シーンが終了するまですべてをメモリに保存します。シーン全体が一度にメモリに収まらない場合にのみ、オブジェクトとデータのアンロード/リロードを考慮する必要があります。

関連する問題