Ios 如何在关闭精灵套件游戏时保持单身?
我使用了一个可以保存游戏中的变化并且运行良好的单例。在游戏结束时,我如何保持单身?我应该使用Ios 如何在关闭精灵套件游戏时保持单身?,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我使用了一个可以保存游戏中的变化并且运行良好的单例。在游戏结束时,我如何保持单身?我应该使用NSCoder import Foundation import SpriteKit class War: SKScene { static var sharedWar = War(size: CGSize(width: 2048, height: 1536)) ... } 保存在UserDefaults中是最好且简单的方法 要保存: let defaults = NSUserDe
NSCoder
import Foundation
import SpriteKit
class War: SKScene {
static var sharedWar = War(size: CGSize(width: 2048, height: 1536))
...
}
保存在UserDefaults中是最好且简单的方法 要保存:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(War.size.width forKey: "width")
defaults.setObject(War.size.height, forKey: "height")
要加载:
let defaults = NSUserDefaults.standardUserDefaults()
if let width = defaults.floatForKey("width"),
let height = defaults.floatForKey("height") {
print(CGSizeMake(width: width, height: height)
}
保存在UserDefaults中是最好且简单的方法 要保存:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(War.size.width forKey: "width")
defaults.setObject(War.size.height, forKey: "height")
要加载:
let defaults = NSUserDefaults.standardUserDefaults()
if let width = defaults.floatForKey("width"),
let height = defaults.floatForKey("height") {
print(CGSizeMake(width: width, height: height)
}
如果需要保存整个场景,
SKScene
已符合NSCoding
的要求,只需将其保存到文件中并加载即可。现在,如果需要保存整个对象,我不建议使用NSUserDefault
,而是使用documentDirectory
请记住,您需要覆盖init?(coder:)
和encode(with:NSCoder)
以保存附加到游戏场景的任何新变量
// Get documents directory
if let docs = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
// Append your file name to the directory path
let path = (docs as NSString).appendingPathComponent("filename")
// Archive your object to a file at that path
NSKeyedArchiver.archiveRootObject(yourObject, toFile: path)
}
装载:
// Get documents directory
if let docs = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
// Append your file name to the directory path
let path = (docs as NSString).appendingPathComponent("filename")
// Unarchive your object from the file
let yourObject = NSKeyedUnarchiver.unarchiveObject(withFile: path) as? Book
// do whatever with yourObject
}
来源:如果需要保存整个场景,
SKScene
已经符合NSCoding
的要求,只需将其保存到文件中并加载即可。现在,如果需要保存整个对象,我不建议使用NSUserDefault
,而是使用documentDirectory
请记住,您需要覆盖init?(coder:)
和encode(with:NSCoder)
以保存附加到游戏场景的任何新变量
// Get documents directory
if let docs = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
// Append your file name to the directory path
let path = (docs as NSString).appendingPathComponent("filename")
// Archive your object to a file at that path
NSKeyedArchiver.archiveRootObject(yourObject, toFile: path)
}
装载:
// Get documents directory
if let docs = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first {
// Append your file name to the directory path
let path = (docs as NSString).appendingPathComponent("filename")
// Unarchive your object from the file
let yourObject = NSKeyedUnarchiver.unarchiveObject(withFile: path) as? Book
// do whatever with yourObject
}
来源:我建议使用Firebase或其他baas@Brian非常感谢。顺便说一句,为什么sharedWar是单身汉?spritekit之外有什么东西需要知道它是什么吗?我建议使用Firebase或其他baas@Brian非常感谢。顺便说一句,为什么sharedWar是单身汉?spritekit之外有什么需要知道的吗?谢谢!NSUserDefaults可以保存整个场景吗?我需要保存当前的“static var sharedWar”谢谢!NSUserDefaults可以保存整个场景吗?我需要保存当前的“static var sharedWar”谢谢!我试着理解)如何调用方法保存和加载?看看我提供的源代码我不知道你想做什么,我给了你如何保存和加载的方法。您可以使用我提供的代码创建自己的函数,并在需要时使用它。谢谢!我试着理解)如何调用方法保存和加载?看看我提供的源代码我不知道你想做什么,我给了你如何保存和加载的方法。您可以根据我提供的代码创建自己的函数,并在需要时使用它。