iPhoneのゲーム開発でcocos2dを使っているのですが、LayerとSceneで迷っています。たとえば、私の単純なゲームには、メイン メニュー、ハイスコア、ゲーム ボードなどの「UI ページ」がいくつかあります。
では、すべての「UI ページ」にレイヤーまたはシーンを使用する必要がありますか?その理由は?
iPhoneのゲーム開発でcocos2dを使っているのですが、LayerとSceneで迷っています。たとえば、私の単純なゲームには、メイン メニュー、ハイスコア、ゲーム ボードなどの「UI ページ」がいくつかあります。
では、すべての「UI ページ」にレイヤーまたはシーンを使用する必要がありますか?その理由は?
SpritesDemo.m/.h を確認すると、レイヤーを使用してから新しいシーンを作成し、レイヤーをアタッチしてからディレクターのシーンを置き換えているようです。
@interface SpriteDemo : Layer
@interface SpriteManual : SpriteDemo
次に、コードは次のことを行います。
-(void)nextCallback:(id)sender {
Scene *s = [Scene node];
[s add: [nextAction() node]];
[[Director sharedDirector] replaceScene s];
}
要するに、あなたの質問に対する答えは「両方」です。レイヤーを使用して実際の「UI ページ」を表しますが、レイヤーを新しいシーンにアタッチし、ディレクターの現在のシーンを置き換えます。
それは簡単です:
これらの例には CCLayer があり、新しいシーンを作成してレイヤーをアタッチする +scene メソッドがあります。名前を付けたレイヤーは「UIページ」ではないためです。シーンは「UI ページ」です。
両方 (シーンとレイヤー) で、さらにレイヤーを子として追加できます。そのため、必要な数のレイヤーを積み重ねることができます。これは、実際にはマルチタッチを有効にする良い方法です。オブジェクトごとにレイヤーを作成し、それらのレイヤーでタッチを有効にします。要するに、彼らのやり方は正しいので、レイヤーを操作し、その +scene メソッドを使用してメイン レイヤーをシーンにアタッチする必要があります。
お役に立てれば。私の英語でごめんなさい。ネイティブではありません。
ある種のタッチ入力を取得しない限り、Layer を使用する必要はありません (TouchEventsDelegate を実装する Cocos2D の唯一のクラスであるため)。レイヤーなしでコードをシーンに直接配置すると、デモは正常に動作します。私が知る限り、他の Cocos2D 機能 (子の追加、位置の設定など) を示すためだけにそれを行ったようです。