我是 swift 2 的新手,我在将变量从一个类传递到另一个类时遇到了困难。
我有一个类“GameScene”,我有一个公共(public)变量 score 并且它在更新函数中不断更新。我想在两个节点相互碰撞时发送 score 值。一旦发生碰撞,我就会使用“mainview .presentScene(gameoverScene)”语法转到另一个场景。我想要 gameoverscene 中的更新分数。
我尝试在 gameoverscene 中使用“private let _gameScene = GameScene()”并使用“finalscore.text = String(_gameScene.finalScore)”将其传递给标签我得到的变量是我在开始时声明的 O 但不是更新的分数。请帮我找出解决方案。
最佳答案
如果您的 GameScene
有一个 score
属性声明如下
class GameScene: SKScene {
var score = 0
}
然后从您游戏的任何节点(已添加到主场景)您可以使用 scene
属性检索您的场景。所以你可以做类似的事情。
class MyNode: SKNode {
func foo() {
guard let gameScene = self.scene as? GameScene else {
fatalError("This node does not belong to a GameScene")
}
gameScene.score = 123
}
}
更新
根据您的评论,我了解到您想在多个场景之间共享 score
值。有几种方法可以实现这一点。以下是最简单的方法之一。
保存
NSUserDefaults.standardUserDefaults().setInteger(123, forKey: "score")
阅读
let score = NSUserDefaults.standardUserDefaults().integerForKey("score")
Please note that this way the value is stored on persistent storage and when you restart the app the value is still available.
关于swift - 在 Swift 中将动态 Int 变量从一个类传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957551/