5
我正在嘗試創建我的第一個sprite套件swift遊戲,並且我的遊戲數據使用nsuserdefaults工作。我想讓它更安全,因此我試圖轉換到NSCoding,但是我在網上找到的東西完全幫助了我,並且讓我感到困惑(如果答案已經存在,那麼很抱歉,我可能已經看過它並且沒有「T能夠理解)從NSUserDefaults更改爲NSCoding
這是我的遊戲狀態類:
class GameState {
var score: Int
var highScore: Int
var stars: Int
var sound: Bool
var carType: Int
var xSize: Double
var ySize: Double
var gameOver: Bool
class var sharedInstance: GameState {
struct Singleton {
static let instance = GameState()
}
return Singleton.instance
}
init() {
// Init
score = 0
highScore = 0
stars = 0
carType = 1
sound = true
xSize = 1
ySize = 1
gameOver = false
// Load game state
let defaults = NSUserDefaults.standardUserDefaults()
highScore = defaults.integerForKey("highScore")
stars = defaults.integerForKey("stars")
sound = defaults.boolForKey("sound")
carType = defaults.integerForKey("carType")
xSize = defaults.doubleForKey("xSize")
ySize = defaults.doubleForKey("ySize")
gameOver = defaults.boolForKey("gameOver")
}
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(stars, forKey: "stars")
defaults.setBool(sound, forKey: "sound")
defaults.setInteger(carType, forKey: "carType")
defaults.setDouble(xSize, forKey: "xSize")
defaults.setDouble(ySize, forKey: "ySize")
defaults.setBool(gameOver, forKey: "gameOver")
NSUserDefaults.standardUserDefaults().synchronize()
} }
,我保存在我的其他類裝載數據使用:
GameState.sharedInstance.*****
我怎麼會去改變這種實現NSCoding,然後加載並保存來自其他類的數據?謝謝。
感謝您的回覆,只有幾個問題: 是'let myGameState ...'你用什麼來代替最初的init()類來爲每個變量添加值? 我將如何更新其他類的遊戲狀態? (更新分數和聲音等) 謝謝 – AEkon
不客氣。這只是一個初始參數,我爲我的例子所做的,你不必改變你的。您只需實施「必需」一個,並確保您要加載的所有屬性都在此處聲明。 – Moritz
哦,好吧,生病了,再次感謝! forfile在appdelegate中,我將它保存到正在使用的手機中?謝謝 – AEkon