繁体   English   中英

Swift:从GameViewController设置GameScene变量

[英]Swift: Set GameScene variable from GameViewController

我需要将几个变量从GameViewController传递给GameScene。

GameViewController:

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(size: view.frame.size) as GameScene? {

        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = false
        skView.showsNodeCount = false
        skView.showsPhysics = false

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        // pass game set-up variables
        scene.idDefence = idDefence
        scene.idAttack = idAttack
        scene.tries = tries
        scene.runs = runs
        scene.teamShirt = teamShirt

        skView.presentScene(scene)
    }
}

GameScene-具有上面列出的变量(idDefence)等。

class GameScene: SKScene, SKPhysicsContactDelegate {

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

    // variables - set-up defenders
    var idDefence = 0
    ...

这符合要求,但idDefence变量(从GameViewController正确打印为数字的println)没有传递给活动的GameScene,而是保持为0。GameScene代码:

override init(size: CGSize) {
    super.init(size: size)

    physicsWorld.gravity = CGVectorMake(0.0, 0.0)
    physicsWorld.contactDelegate = self

    getDefenceInfo()
    getAttackInfo()

    loadLevel()
    spawnPlayers()
    spawnDefenders()

}

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


// get attack variables from database
func getDefenceInfo(){
println("defence ID: \(idDefence)")
}

任何帮助,不胜感激

您正在init(size:)初始化程序中检查这些属性的值; 在网上被称为:

if let scene = GameScene(size: view.frame.size) as? GameScene {
    ... 
}

至此,尚未运行通过GameViewController设置属性值的代码。 因此它们仍然具有默认值。

如果在GameScenedidMoveToView方法中检查属性的值,您会看到它们都具有正确的值,因为didMoveToView将在skView.presentScene(scene)之后skView.presentScene(scene)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM