目前我正在开发一个游戏项目而且我遇到了一个问题,即除非我退出应用程序(完全关闭)并再次运行游戏,否则游戏的高分不会更新。在代码方面我写下了这个。
var data = NSUserDefaults.standardUserDefaults()
//this is when the level is over and the highscore is saved
if score > level1HS{
data.setInteger(score, forKey: "level1HS")
data.synchronize()
}
//and this is in the main menu where the highscore is shown
level1text.text = "\(String(level1HS))"
我也尝试用此level1text.text = "\(String(level1HS)"
level1text.text = "\(level1HS)"
有人可以帮我找到一种方法让游戏一旦实现就能更新高分吗?谢谢!
答案 0 :(得分:0)
无论您何时尝试更新高分,您都需要收听StandardUserDefaults()
更新时间的通知。它看起来像这样:
let defaults = NSUserDefaults.standardUserDefaults()
let center = NSNotificationCenter.defaultCenter()
center.addObserverForName(NSUserDefaultsDidChangeNotification, object: nil, queue: nil) { (notification) -> Void in
let newScore = defaults.objectForKey("level1HS")
}
答案 1 :(得分:0)
您是否尝试过以下操作?
var level1HS = 10
NSUserDefaults.standardUserDefaults().setObject(highestScore, forKey:"level1HS")
NSUserDefaults.standardUserDefaults().synchronize()
您的问题可能是您没有使用.synchronize()方法。 另外,看看这个问题: SpriteKit High Score