Ios 从.sks文件复制节点

Ios 从.sks文件复制节点,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,所以我试着做的是你在第8分钟看到的著名的“608构建spritekit游戏的最佳实践”,但用的是Swift语言。 基本上是从另一个.sks文件中的SKScene复制子节点 我只是设法做到了,以某种方式。。。但程序会在自动断点处停止,并显示消息“Swift dynamic cast failed”。我不知道怎么了。。。我的意思是,我知道这句话,但我不明白copy()方法是如何工作的 这是我的密码: class GameScene: SKScene { var camera = SKNode()

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

我只是设法做到了,以某种方式。。。但程序会在自动断点处停止,并显示消息“Swift dynamic cast failed”。我不知道怎么了。。。我的意思是,我知道这句话,但我不明白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

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

此代码有问题

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: 好的,所以我把日志和堆栈框架不作为文本,以避免页面太长。。。这是:

日志: 堆栈:

它停止的那一行是调用unarchiveFromFile方法的地方。这与那种方法有关,但我不知道出了什么问题。

解决了它。 我只需要换一个 SKScene.unarchiveFromFile(“fillNode”)中的子级的
!。孩子们
和游戏场景中孩子们的
。unarchiveFromFile(“fillNode”)!。儿童

只需将“SKScene”替换为“gamesecene”

即可将图像复制并粘贴为文本(选择并复制),但其内容并不相关。调用堆栈、日志和发生错误的代码行将非常有用。此外,如果sks场景随后被丢弃,则不需要复制节点。相反,对于每个节点,您可以/应该调用其removeFromParent方法,然后将其作为子节点添加,但不复制i希望我添加了正确的内容!不太熟悉那些日志和堆栈框架。。。一点也不:/n无论如何,代码是第一次编辑中的代码。不过变化不大……正如我所说,您可以选择它作为文本并将其粘贴为问题中的文本,而无需对图像进行简单的修改:nodeToFill.addChild(SKSCene.unarchiveFromFile(“fillNode”))