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

问题描述 投票:0回答:2

我正在尝试在我的 GameViewController.swift 文件上使用我的 GameScene.swift 文件中的变量来适当地安排我的插页式广告的时间。这是一个布尔值,用于确定我的玩家是否死亡。

var died = Bool()

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

在我的 GameScene 中

died == true
时,我想将其发送到我的 GameViewController,然后显示插页式广告。我如何在场景之间传递布尔值?

ios swift sprite-kit boolean skscene
2个回答
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..
     }
}

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.