0

ゲーム内のフットボールに火のパーティクル システムを作成していますが、最適化コード (autoRemoveOnFinish) をどこに配置すればよいか悩んでいます。これが私が今やっている方法です。

インターフェース

CCParticleSystem        *_fire;
@property (readwrite,retain) CCParticleSystem *fire;

実装

self.fire = [CCParticleSystemQuad particleWithFile:@"fire.plist"];
self.fire.position = cpv(self.contentSize.width * .5, self.contentSize.height * .5);
self.fire.positionType = kCCPositionTypeGrouped;
_fire.autoRemoveOnFinish = YES;
[self addChild:_fire z:0];

これが正しい方法である場合、fps が約 25 に低下するのはなぜですか。画面上で一度に作成できるフットボールは 5 つだけです。

4

1 に答える 1

1

autoRemoveOnFinish を有効にする場所や時期は関係ありません。重要な点は、これは CCParticleExplosion のような 1 回限りの効果に対してのみ機能するということです。1 回限りの効果の期間プロパティは、正の値に設定されています。

フレームレートに問題がある場合は、totalParticles (Glyph Designer の最大粒子数) の値が高すぎると思います。実行中のパーティクル エフェクトは 5 つだけかもしれませんが、各パーティクル システムは何百ものパーティクルをスポーンする場合があります。

また、各パーティクルのサイズ (それぞれのテクスチャ) もパフォーマンスに大きな影響を与えます。

于 2012-06-14T22:45:59.453 に答える