0

次の方法でパーティクル エフェクトを作成します。

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
p.autoRemoveOnFinish = YES;
//more parameters
p.duration = 1;

そしてそれを私のシーンに追加します:

[self addChild:p z:self.zOrder+1];

このパーティクル エフェクトを作成するたびに、3MB のメモリが割り当てられますが、解放されることはありません。私は何を間違っていますか?パーティクル システムを手動で解放する必要がありますか?

NSZombies は無効になっているため、誤ってメモリに保持されることはありません。

4

1 に答える 1

2

割り当てた (または保持した) ものはすべて解放する必要があります。Cocos2D の場合、次のように autorelease オブジェクトに変換するのが最も簡単です。

CCParticleSun* p = [[CCParticleSun alloc]initWithTotalParticles:5000];
[p autorelease];
p.autoRemoveOnFinish = YES;
p.duration = 1;

その後、Cocos2D がシーンをクリーンアップした後にリリースされます。

PS: 5000 個のパーティクルは膨大な量のパーティクルです! 数メガバイトのサイズの割り当てが表示されているのも不思議ではありません。約 32x32 ピクセル以上のパーティクル テクスチャを使用している場合は、最大で 500、100 以下にしてみてください。

于 2011-11-17T15:17:51.737 に答える