这个问题我只出现在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的问题。