Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在关闭精灵套件游戏时保持单身?_Ios_Swift_Sprite Kit - Fatal编程技术网

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”谢谢!我试着理解)如何调用方法保存和加载?看看我提供的源代码我不知道你想做什么,我给了你如何保存和加载的方法。您可以使用我提供的代码创建自己的函数,并在需要时使用它。谢谢!我试着理解)如何调用方法保存和加载?看看我提供的源代码我不知道你想做什么,我给了你如何保存和加载的方法。您可以根据我提供的代码创建自己的函数,并在需要时使用它。