从 .sks 文件复制节点



所以我试图做的是你可以在著名的"构建 spritekit 游戏的 608 个最佳实践"中看到的 min. 8,但用 Swift 语言。基本上从另一个 .sks 文件中的 SKScene 复制子节点。

我只是设法做到了,在某种程度上...但是程序在某种自动断点处停止,并显示此消息"Swift 动态转换失败"。我不知道怎么了...我的意思是,我知道这条线,但我不明白 copy() 方法是如何工作的。

这是我的代码:

class GameScene: SKScene {
var camera = SKNode()
var player = SKNode()
override func didMoveToView(view: SKView) {
    camera = childNodeWithName("Camera")! as SKNode
    player = camera.childNodeWithName("player")! as SKNode
    var child = SKNode()
    for child in SKScene.unarchiveFromFile("Player")!.children {
//Here is the line i doubt of
        player.addChild(child.copy() as SKNode)
    }
}
//etc etc...

提前非常感谢:D

编辑:是的,我创建了另一个项目只是为了尝试这种方法,是的,它仍然停在该断点处。没有错误,只是在我按下运行后停止在那里。

这段代码有问题...

var nodeToFill = SKNode()
override func didMoveToView(view: SKView) {
    nodeToFill = childNodeWithName("nodeToFill")!
    var child = SKNode()
    for child in SKScene.unarchiveFromFile("fillNode")!.children {
        child.removeFromParent()
        nodeToFill.addChild(child as SKSpriteNode)
    }

这就是它停止的地方...(无法发布图片...http://i.stack.imgur.com/m6RRg.png

编辑2:好的,所以我把日志和堆栈框架不作为文本,以避免使页面太长......他们在这里:

日志:https://i.stack.imgur.com/iP7JP.png堆叠:https://i.stack.imgur.com/JReFU.png

它停止的行是调用unarchiveFromFile方法的位置。它与该方法有关,但我无法弄清楚出了什么问题

解决了。我只需要更换 for child in SKScene.unarchiveFromFile("fillNode")!.childrenfor child in GameScene.unarchiveFromFile("fillNode")!.children.只需将"SKScene"替换为"GameScene"

最新更新