如何从Swift中的另一个类调用字符串?

时间:2016-12-06 20:57:39

标签: swift sprite-kit

具体来说,SpriteKit。

在GameScene中我设置了变量:

var score = Int()

不断变化。在EndScene.swift中,我想在标签中打印该分数。

我对标签的看法通常是:

scoreLabel.text = "SCORE:" + String(score)

但是EndScene不会将得分视为GameScene的值。如何在该字符串中调用“得分”?

在GameScene中,我有一个名为

的函数

func updateScore(_ scoreToAdd:Int){

    score = score + scoreToAdd

    scoreLabel.text = "Score: " + String(score)

}

这就是EndScore的得分应该相等。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

您需要确保在GameScene.swift中将得分定义为公开,以便您可以在GameScene类之外访问它 -

public var score = Int()

然后确保使用GameScene对象访问它 -

let game = GameScene()
scoreLabel.text = "SCORE:" + String(game.score)

答案 1 :(得分:0)

您应该使用NSArchiver保存到您重视的文件并将其检索到您想要的位置,但这只是保存单个参数的长方法,因此您可以保存您的分数值通过UserDefaults(也称为下一步用户默认值或NSDefaults)。它快速且易于使用。

// Save score value
UserDefaults.standard.set(score, forKey:"score")
UserDefaults.standard.synchronize()

// Retrieve score value
if let savedScore = UserDefaults.standard.object(forKey: "score") {
    print(savedScore)
}

答案 2 :(得分:0)

当您转到EndScene时,请使用userData传输数据。

func movingToEndScene()
{
    let endScene = EndScene(...)
    let userData = ["score":score]
    endScene.userData = userData
    self.view.presentScene(endScene)
}

然后,在你的最终场景中,你可以随心所欲地做任何事情:

scoreLabel.text = "\(self.userData["score"])"