0

我有多个场景存储在 Global/BaseScene

每个 SceneType: 存储为 enum: 设置为类似于当前场景的 Integer

第一个目标是在每个场景中填充分数,其中有七个。DONE由于堆栈溢出和实验

我必须为每个单独的场景创建默认键,以计算 highScore,因此每个场景都有七个唯一的“highScore”“键”。

在游戏场景中:

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"

类似于这篇文章,实际上就像这篇文章一样,除了我必须做不同的配置,因为我的个人设置..

我尝试实施的总分示例

在课堂之外并参考场景中的内容,我需要填充该数据。NO Go 默认为零。

我如何简单地将这些键的值加在一起?对于我可以显示类似于其他场景的内容,我已经实现了。稍后我可能想分配一个钥匙链值,现在我只是想让它显示在 GameCenter 中发布。(其中也有键“GameCenterHighScore”)

将它们全部设置为相同的键“highScore”不起作用....为了清楚起见,我尝试了多次。提前致谢。

编辑 如果我尝试将所有默认值加在一起以获得总数,则会引发以下错误:

表达方式过于复杂,无法在合理时间内解决;考虑将表达式分解为不同的子表达式 [Swift 复合算术运算错误3

4

0 回答 0