从 .sks 文件复制节点
Copy nodes from a .sks file
所以我尝试做的是您至少可以看到的内容。 8 在著名的“构建 spritekit 游戏的 608 个最佳实践”中,但使用 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
编辑:
是的,我创建了另一个项目只是为了尝试这种方法,是的,它仍然停在那个断点处。没有错误,在我按下运行后就停在那里。
这段代码有问题...
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)
}
这就是它停止的地方......
(不能 post 图片...)
HTTP://i.stack.imgur.com/m6RRg.png
编辑 2:
好的,所以我将日志和堆栈框架不作为文本放置以避免使页面太长...它们是:
日志:http://i.stack.imgur.com/iP7JP.png
堆栈:http://i.stack.imgur.com/JReFU.png
它停止的行是调用unarchiveFromFile 方法的地方。它与该方法有关,但我无法弄清楚出了什么问题
解决了。
我只需要更换
for child in SKScene.unarchiveFromFile("fillNode")!.children
和 for child in GameScene.unarchiveFromFile("fillNode")!.children
。
只需将 "SKScene" 替换为 "GameScene"
所以我尝试做的是您至少可以看到的内容。 8 在著名的“构建 spritekit 游戏的 608 个最佳实践”中,但使用 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
编辑: 是的,我创建了另一个项目只是为了尝试这种方法,是的,它仍然停在那个断点处。没有错误,在我按下运行后就停在那里。
这段代码有问题...
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)
}
这就是它停止的地方...... (不能 post 图片...) HTTP://i.stack.imgur.com/m6RRg.png
编辑 2: 好的,所以我将日志和堆栈框架不作为文本放置以避免使页面太长...它们是:
日志:http://i.stack.imgur.com/iP7JP.png 堆栈:http://i.stack.imgur.com/JReFU.png
它停止的行是调用unarchiveFromFile 方法的地方。它与该方法有关,但我无法弄清楚出了什么问题
解决了。
我只需要更换
for child in SKScene.unarchiveFromFile("fillNode")!.children
和 for child in GameScene.unarchiveFromFile("fillNode")!.children
。
只需将 "SKScene" 替换为 "GameScene"