我有多个场景存储在Global / BaseScene
中每个SceneType:存储为枚举:设置为类似于此present scene的整数
第一个目标是让得分在每个场景中填充,其中有七个。由于堆栈溢出和实验
,完成我必须为每个场景创建默认密钥,以计算highScore,因此我为每个场景提供了七个独特的“highScore”“键”。
在GameScene中:
var highScoreA1: Int = 0
var score: Int = 0 {
didSet {
a1Score.text = "Score: \(score)"
}
}
//above called before override func didMoveToView(view: SKView) {
//Called in GameOver Method
let scoreDefault = NSUserDefaults.standardUserDefaults()
scoreDefault.setInteger(score, forKey: "score")
if (score > highScoreA1){
let highScoreA1Default = NSUserDefaults.standardUserDefaults()
highScoreA1Default.setInteger(score, forKey: "highScoreA1")
//highscoreA1Default.synchronize()
还有六个与此相似的键。我的目标是在两个不同的场景中填充“totalScoreKey”Hud场景和另一个场景(可能是场景上的游戏)
我在考虑将这些键添加到一起以填充总分的功能。 考虑到所有这些场景都是子类(Global BaseScene,每个场景都有子类(对于节点操作,可能不相关但认为它可能有用)
我试过:将所有得分数据移动到一个类中并使用NSCoding / NSObject所需的init和可选绑定变得非常痛苦,老实说我正在努力保持版本的简单一。
import Foundation
class GameState {
var score:Int = 0
var highScore:Int()
var totalScore:Int()
class var sharedInstance: GameState {
struct Singleton {
static let instance = GameState()
}
return Singleton.instance
}
}
init() {
// Init
score.type = 0
highScore = 0
totalScore = 0
// Load game state
let defaults = NSUserDefaults.standardUserDefaults()
highScore = defaults.integerForKey("highScore")
}
func saveState() {
// Update highScore if the current score is greater
highScore = max(score, highScore)
// Store in user defaults
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(highScore, forKey: "highScore")
defaults.setInteger(totalScore, forKey: "totalScore")
NSUserDefaults.standardUserDefaults().synchronize()
}
没有工作的各种功能都默认为零,直到我弄清楚如何正确检索数据。
let total score = "totalScoreKey"
与这篇帖子类似,但实际上除了因为我的个人设置而不得不做不同的配置以外...
total Score example I tried to implement
在课外,并指在场景中我需要填充该数据。 NO Go默认为零。
如何简单地将这些键的值加在一起?对于我可以显示类似于其他场景,我已经实现了。 后来我可能想要分配一个钥匙链值,现在我只是想让它出现在GameCenter上发布。 (也有关键的“GameCenterHighScore”)
将它们设置为相同的键“highScore”不起作用....只是为了清楚,我尝试了多次。提前致谢。
修改 如果我尝试将所有默认值一起添加以获得总数,则会引发以下错误:
表达太复杂,无法在合理的时间内解决;考虑 将表达式分解为不同的子表达式 [Swift复合算术运算ERROR 3