Frage

Ich versuche herauszufinden, wie man mit Spritebuilder und Cocos2D in Xcode am besten einen Level-Parameter zwischen Szenen übergeben kann.

Ich verwende den folgenden Standardcode, um zwischen Szenen zu wechseln.

[[CCDirector sharedDirector] replaceScene:[CCBReader loadAsScene:@"Gameplay"]];

Jede Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung

Unter der Annahme, dass die Gameplay.ccb hat eine GameplayClass als benutzerdefinierte Klasse zugewiesen, und diese Klasse hat eine Eigenschaft namens currentLevel, können Sie auf die Instanz zugreifen und die Ebene wie folgt zuweisen:

CCScene* theScene = [CCBReader loadAsScene:@"Gameplay"];
GameplayClass* game = (GameplayClass*)theScene.children.firstObject;
game.currentLevel = 3;

[[CCDirector sharedDirector] replaceScene:theScene];

Beachten Sie, dass zu der Zeit currentLevel zugewiesen ist die GameplayClass wird seine bereits ausgeführt haben init und didLoadFromCCB methoden, da das während passiert loadAsScene.Wenn Sie eine weitere Überschreibung der Initialisierungsverarbeitung benötigen onEnter in GameplayClass:

-(void) onEnter
{
    [super onEnter]; // must call super

    switch (self.currentLevel)
    {
        // other switches omitted...

        case 3:
            // your level 3 code here
            break;
    }
}

Andere Tipps

In meinem Spiel (gemacht mit COCOS2D 2.0 + Cocosbuilder), fügte ich eine Klassenmethode loadWithLevelID:levelID hinzu, um der Klasse GameObjectlayer, der die Gameplay-Elemente verwaltet:

generasacodicetagpre.

So kann ich jetzt eine GameObjectlayer-Tippen erstellen

generasacodicetagpre.

Das Hinzufügen einer "Last" -Methode an die Klassen, die CCBI-Dateien aufkarten, bietet folgende Vorteile:

    .
  1. Nur die Klasse kennt den Namen seiner zugehörigen CCBI-Datei.
  2. Die CCBI-Datei zum Erstellen einer bestimmten Klasse wird nur einmal im gesamten Projekt referenziert.
  3. Alle Logik, um ein Objekt einzurichten (z. B. vom Typ G1GameObjectlayer) ist im Objekt selbst.
  4. Ich denke, Sie können einen ähnlichen Ansatz mit Ihrer CCScene-Unterklasse folgen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top