从.sks文件复制节点

时间:2015-01-07 19:05:52

标签: ios swift sprite-kit

所以我尝试做的就是你能在最后看到的东西。 8用于构建spritekit游戏的着名" 608最佳实践",但在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: 好的,所以我把日志和堆栈框架不作为文本,以避免使页面太长......这里是:

记录:http://i.stack.imgur.com/iP7JP.png Stack:http://i.stack.imgur.com/JReFU.png

它停止的行是调用unarchiveFromFile方法的地方。它与该方法有关,但我无法弄清楚错误

1 个答案:

答案 0 :(得分:0)

解决了它。 我只需要更换 for child in SKScene.unarchiveFromFile("fillNode")!.children for child in GameScene.unarchiveFromFile("fillNode")!.children {{1}}。 只需将“SKScene”替换为“GameScene”

即可