2011-02-01 2 views
1

私は、ゲームプレイレイヤがロードされたときにロードされている自分のゲームのアセットをいくつか持っています。ロードする画面でアプリケーションを起動するときにロードする方が好きです。これは明らかに標準的な作業です。cocos2Dのアセットをあらかじめロードする

私の問題は、新しいシーンがcocos2D内で起動される方法です。プロジェクト全体でいくつかの場所で(いくつかのバリエーションで)発生し、次のコードを考えてみましょう:

[[CCDirector sharedDirector] replaceScene:[CCTransitionShrinkGrow transitionWithDuration:0.5f scene:[GameplayLayer scene]]]; 

これは、新しいものと現在のシーンを交換するための標準的な方法です。私の質問は、そのフォーマットを前提に、プリロードされたアセットを新しいGameplayLayerにどのように渡すのですか? cocos2Dでこれを行う方法はありますか?私は信じられないほどシンプルなものを見逃しているような気がしますが、今のところそれは私の謎です。

+0

スプライトシートや簡単な画像を使用していますか? –

+0

私はスプライトシートを使用していますが、私が最も関心を持っているのは自分自身で作成したクラスです(つまり、シーンを1つ読み込んでどこでも自動的に使用できるクラスではありません)。 – jonmorgan

+0

アセットの読み込み以外にも、メッセージとデータオブジェクトをシーン間で渡すための一般的なアプリケーションがあります。たとえば、レベルが終わったら、いくつのポイントが得られたか、どのくらいの時間がかかったかなどの概要を新しいシーンにロードすることができます。 – jonmorgan

答えて

4

Cocos2dは、シーン間で持続するテクスチャキャッシュを使用します。ロードシーンでこのキャッシュにアセットをプリロードすることはできますが、それらはゲームシーンから引き続き使用できます。これらをロードする方法はあなた次第です。イメージの場合は、非同期的に行うことを選択できます。ローディングシーンが適切なフレームレートを維持し、プログレスバーをレンダリングできるようにします。

This postは基本的な考え方を得ます。

このスレッドは、その点ではあなたに有用であり得る:http://www.cocos2d-iphone.org/forum/topic/2242

あなたは資産の独自のクラス(つまり、サポートされていませんcocos2d画像、または何かを)持っている場合は、あなたがあなた自身のキャッシュシングルトンクラスを作成することができます(さまざまなcocos2dクラスのsharedManagerインスタンスがどのように実装されているかを見てください)、その中に資産をロードします。あなたが必要と思うときはいつも、メモリ管理が行く限り、自分で資産をリリースしなければなりませんが、それはむしろこの質問の範囲を超えています。

+0

私は自分のカスタム資産のシングルトンルートを終了し、それは完全に動作します。私は本当に助けに感謝します。 – jonmorgan