swift - 在 Swift 中将动态 Int 变量从一个类传递到另一个类

标签 swift variables dynamic sprite-kit

我是 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/

相关文章:

ios - 当应用程序处于终止( kill )状态时保持实时 websocket

swift - 防止UIButton长按重复功能

Java错误: first type: double,第二种类型:字符串

javascript - 如何打印有序列表中列表元素的索引?

c - 在 C 中访问和输入元素到动态结构数组中

Ios Swift 日期从时区转换

Swift 中的 C# PathGeometry 等价物

php - 将 Javascript 变量转换为 PHP 变量

php - 从外部获取变量,在 PHP 函数内部

c# - 为什么调用 ISet<dynamic>.Contains() 编译,但在运行时抛出异常?