Cocos2Dについて質問があります。ゲームで2つのシーンがあり、どちらもシーンにスプライトがたくさんあります。 1つのシーンを置き換えて別のシーンをロードするとどうなりましたか?すべてのスプライトが自動的に削除されるのですか、それとも思い出がありますか?シーンのdeallocでリリースすると解放されますか?Cocos2Dシーンメモリ管理
この状態でメモリをどのように管理しているのか分かりませんので、何か説明してもらえますか?これはシーンにロードするときスプライトを保持させるために重要です。
Cocos2Dについて質問があります。ゲームで2つのシーンがあり、どちらもシーンにスプライトがたくさんあります。 1つのシーンを置き換えて別のシーンをロードするとどうなりましたか?すべてのスプライトが自動的に削除されるのですか、それとも思い出がありますか?シーンのdeallocでリリースすると解放されますか?Cocos2Dシーンメモリ管理
この状態でメモリをどのように管理しているのか分かりませんので、何か説明してもらえますか?これはシーンにロードするときスプライトを保持させるために重要です。
新しいシーンがメモリに読み込まれた後、すべてのスプライトが解放されます。スプライトは保持していない限り、すべて解放されます。
何をやっていることは何の保持や凝っ
CCSprite* sprite = [CCSprite spriteWithFile:@"test.png"];
しない場合、あなたは/遷移シーンを切り替えたときに、このシーンの全ての子供が(この例では、スプライトは、自動的に解除されます。あなたは、 。
オブジェクトの所有権を取ることはありません。しかし、あなたがオブジェクトの所有権を取る場合、たとえば、言わせている場合:hero = [[CCSprite spriteWithFile:@"hero.png"] retain];
// or
hero = [[CCSprite alloc] initWithFile:@"hero.png"];
あなたはYでそれを解放する必要があります私たちのdealloc
あなたがreplaceSceneを呼び出す瞬間、両方のシーンは短期間メモリに存在します! CCSceneTransitionを使用すると、トランジションの間、両方のシーンがメモリに保存されます。次のように
流れがある:
シーン内に-(void) cleanup
メソッドを実装して、ほとんどのiを削除できます新しいコンテンツを-(void) onEnter { [super onEnter]; }
メソッドに読み込むのを延期することができます。
個人的には、このシナリオでは、2つのシーンの間に入ってくるシーン(「数ミリ秒以上アクティブではないかもしれません)」という「ローディング」シーンというより良いアプローチがあります。これにより、次のシーンが初期化される前に最初のシーン時間が割り当て解除されます。
がtrueでない場合、最初の解答で説明したように、2つのシーンがメモリ上に存続する期間があります – xus