复制SKNode

时间:2017-01-28 02:48:18

标签: ios swift xcode

这个问题我只出现在iOS 10.2中。我创建了一个sks文件,其中包含将在游戏中生成的对象。此场景还包含每个对象的动画。在视图控制器中,加载此场景并将障碍物添加到阵列中。

var obstacles = [SKNode]()
for child in SKScene(fileNamed: "Hazards.sks")!.children {
    obstacles.append(child)
}

这些障碍在需要时被复制到GameScene中

 addChild(obstacles[number].copy() as! SKNode)

在节点上运行新动画,将其从屏幕顶部移动到底部。这个动画没有问题。所有这些代码在iOS 10.1中运行良好。将节点复制到场景的行在iOS 9.3中崩溃了。

我有问题是复制节点的场景正在丢失它们的动画,因为它们是从已经取消初始化的场景中复制的。创建对场景的强引用修复了一些节点的问题。将节点复制到数组而不是添加对它的引用可以完全解决问题。 View Controller中的新代码如下所示:

var obstacles = [SKNode]()
for child in SKScene(fileNamed: "Hazards.sks")!.children {
    obstacles.append(child.copy() as! SKNode)
}

我仍然想知道为什么这只是iOS 10.2的问题。

0 个答案:

没有答案