gpt4 book ai didi

sprite-kit - GameViewController 中的 unarchiveFromFile 方法是做什么用的?

转载 作者:行者123 更新时间:2023-12-05 01:02:57 24 4
gpt4 key购买 nike

当我尝试在 Swift 中为我的游戏添加不同的场景时,我遇到了 unarchiveFromFile 方法。这种方法的问题在于它只适用于 GameScene 类。如果你从

extension SKNode {
class func unarchiveFromFile(file : NSString) -> SKNode? {
if let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") {
var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil)
var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData)

archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene")
let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene
archiver.finishDecoding()
return scene
} else {
return nil
}
}
}

class GameViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as SKView
skView.ignoresSiblingOrder = true
skView.presentScene(scene)
}
// This won't work for MenuScene.unarchiveFromFile("MenuScene") as? MenuScene
// nor MenuScene.unarchiveFromFile("MenuScene") as? GameScene

为了能够与其他 SKScene 一起工作,我将所有出现的类 GameScene 更改为 SKScene。虽然它现在适用于其他 SKScene 类,但我仍然不明白它是什么。

这个方法有什么用?我应该保留它吗?

最佳答案

我没有经常使用 Xcode 6,但这是我的理解(有人可能会纠正我或解释):

这就是您的应用如何利用 GameScene(或任何 SKScene)的布局数据等。如果您单击 Project Navigator 面板中的 GameScene.sks 文件,您将获得一个用于您的 GameScene 的可视化编辑器。

如果您希望使用此布局数据,则可以使用该方法。您可以在场景编辑器中直观地布置您的 GameScene,而无需编写位置、设置等代码。

关于sprite-kit - GameViewController 中的 unarchiveFromFile 方法是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25468013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com