具体来说,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的得分应该相等。我怎么能这样做?
答案 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"])"