2016-07-04 23 views
1

Ich versuche eine Variable aus meiner GameScene.swift-Datei in meiner GameViewController.swift-Datei zu verwenden, um meine Interstitial-Anzeigen entsprechend zu synchronisieren. Es ist ein boolescher Wert, der bestimmt, ob mein Spieler tot ist oder nicht.Verwenden Sie einen booleschen Wert aus einer anderen Szene in SpriteKit - Swift

var died = Bool() 

Das ist alles, was ich getan habe, um die Variable in meinem GameScene zu erstellen.

Wenn staged == true in meinem GameScene, möchte ich das an meinen GameViewController senden und dann eine Interstitial-Anzeige zeigen. Ich muss wirklich nur wissen, wie man zwischen den Szenen einen booleschen Wert setzt. Vielen Dank im Voraus für Ihre Hilfe.

Antwort

1

Sie können diese Schritte ausführen.

Tun Sie dies in Ihrem GameScene:

protocol PlayerDeadDelegate { 
    func didPlayerDeath(player:SKSpriteNode) 
} 

class GameScene: SKScene { 
    var playerDeadDelegate:PlayerDeadDelegate? 
    ... 
    // during your game flow the player dead and you do: 
    playerDeadDelegate.didPlayerDeath(player) 
    ... 
} 

In der GameViewController Sie tun:

class GameViewController: UIViewController,PlayerDeadDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let scene = GameScene(fileNamed:"GameScene") { 
       ... 
       scene.playerDeadDelegate = self 
     } 
    } 

    func didPlayerDeath(player:SKSpriteNode) { 
     print("GameViewController: the player is dead now!!!") 
     // do whatever you want with the property player.. 
    } 
} 
0

Ihr GameScene sollte ein Referenzobjekt als Stellvertreter haben (z. B. gemäß dem GameSceneDelegate-Protokoll), das auf das GameViewController-Objekt verweist. Wenn staged dann wahr wird, informieren Sie Ihr Delegate-Objekt (GameViewController-Objekt) über dieses Ereignis über eine Delegate-Methode und implementieren Sie diese Methode, indem Sie das oben genannte Protokoll in Ihrer GameViewController-Klasse erfüllen.

+0

Ich bin ein Anfänger-Programmierer. Können Sie mir ein Beispiel im Code geben? Oder würde zu lange dauern? –