1

最近、Cocos2d 2.0にアップグレードしました。それ以前は、ゲームは正常に動作し、フレームレートは60fpsで安定していました。2.0にアップグレードし、一部のコードを新しいバージョンに変更した後、ゲームを約3〜4分間プレイすると、フレームレートが約40ではなく50に低下することを認識しました。

いくつかのスプライトの割り当てを誤って解除するなど、コードにいくつかの間違いを見つけましたが、このFPSドロップはまだそこにありました。

シーン内でスプライトを作成し、スプライトを継続的に削除しています。ゲームの各ラウンドの後、画面要素を削除して、新しいラウンドのためにそれらを再度作成しています。ほとんどすべての要素がアニメーション化されており、シーンから削除する前にすべてのアクションを停止しています。

シーンを削除して再開すると、FPSレートが通常に戻ることがわかりました。

私が間違っていることは何ですか?いくつかの可能な解決策を試しましたが、ルートの原因が見つかりません。

誰かがここで助けることができますか?

ああ、私はコードがCocos2d1.xバージョンで正常に機能していたことを言及するのを忘れました。同じコードでFPSの低下を認識したことはありません。

4

1 に答える 1

1

デバッグまたはリリース? デバイスまたはシミュレーター? ---> デバイスのリリース ビルドでのみパフォーマンスを測定します。

説明からすると、これはメモリ リークのように聞こえます。これは、メモリ使用量がますます高くなるか、割り当てを解除しないノードが増えて、実行し続ける可能性があることを意味します。おそらく、画面外に描画することさえあります。

あるバージョンが正常に動作し、別のバージョンでは正常に動作しない理由は多数あります。このバグが、移行プロセス中に導入された新しいバグにすぎないとは誰が言えますか。簡単なテストから始めます。シーンのすべてのノードを削除するときに、dealloc メソッドを実行しますか? そうでない場合は、メモリ リーク、おそらく保持サイクルが発生しています。cocos2d の API を割り当てプロパティから保持プロパティに変更するだけで、このようなことが起こります。

次に、Instruments をチェックして、メモリ リークが発生している場所を正確に特定します。

于 2012-09-12T21:19:37.750 に答える