使用SpriteKit中另一个场景的布尔值 - Swift

时间:2016-07-04 03:19:28

标签: ios swift sprite-kit boolean skscene

我正在尝试使用GameViewController.swift文件中的GameScene.swift文件中的变量来适当地计算我的插页式广告。它是一个布尔值,用于确定我的播放器是否已经死亡。

  var died = Bool()

这就是我在GameScene中创建变量所做的一切。

当我的GameScene中死亡== true时,我想将其发送到我的GameViewController,然后显示插页式广告。我真的只需要知道如何在场景之间传递布尔值。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以按照以下步骤操作。

在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)
    ...
}

在你做的GameViewController中:

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..
     }
}

答案 1 :(得分:0)

你的GameScene应该有一个引用对象作为委托(例如符合GameSceneDelegate协议),它实际上指向GameViewController对象。然后,当death变为true时,通过委托方法通知您的委托对象(GameViewController对象),并通过符合GameViewController类中的上述协议实现该方法。