我有三个场景,一个MainMenu场景,一个GamePlay场景和一个GameOver场景。用户在游戏场景中获得其得分,并且我想将该得分转移到GameOver场景。我怎样才能做到这一点? (如果您需要我的代码或更多信息,请询问!)
答案 0 :(得分:2)
您可以使用NSUserDefaults类作为最简单的解决方案......
在您的GameplayScene中,您将分数设置为持久存储。
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(score, forKey: "scoreKey")
defaults.synchronize()
稍后在GameOver场景中,你会读到这样的持久存储:
let defaults = NSUserDefaults.standardUserDefaults()
let score = defaults.integerForKey("scoreKey")
println(score)
关于synchronize()方法(来自文档):
因为此方法会定期自动调用, 只有在您不能等待自动时才使用此方法 同步(例如,如果您的应用程序即将退出)或 如果要将用户默认值更新为磁盘上的内容,即使如此 你没有做任何改变。
或者我猜你可以在GameOver场景上制作公共财产(得分),转换时,用当前得分设置该属性(来自游戏场景)。
同样,您可以将值设置为每个节点都具有的userData属性,如下所示:
newScene.userData?.setValue(score, forKey: "scoreKey")
修改强>
如果您对持久性感兴趣(在应用程序启动之间提供值),NSUserDefaults将是首选方式。否则,您可以在他的示例中使用userData或KnightOfDragon指向的结构。
答案 1 :(得分:2)
NSUserDefaults的替代方案是创建一个容纳所有全局数据的结构
struct GlobalData
{
static var gold = 0;
static var coins = 0;
static var lives = 0;
}
然后你会像这样使用它:
let score = Global.score;
和
Global.score += 10;