SceneKit添加楼层崩溃

时间:2017-10-15 12:50:17

标签: ios swift scenekit

我在场景编辑中编辑。第一个场景没问题(场景包含一个楼层)。但是当我使用pip一个新的SCNScene(它只包含一个foor)崩溃时。

原因:

pip

scene edit   crash reason

1 个答案:

答案 0 :(得分:1)

同意这是一个SceneKit iOS 11问题 - 我不记得在iOS 11之前版本的iPad上看到这个问题。

请注意,这似乎不是iPhone的问题,只有iPad(可能只是iPad Air 2 - 因为这是我拥有的唯一物理iPad设备)。

我已经能够确认存在:在某些情况下,与真正的iPad(而不是模拟器)不兼容。我还没有完全弄清楚具体的场景(也许只有当你在场景中添加一个场景时才会这样做。)

我推荐的解决方案是不使用present:with(可能使用相机/灯光来模拟转换,这就是我正在做的“淡入”转换)。您不需要使用礼物:通过过渡来呈现您的场景。

例如,如果您从原始Apple SceneKit模板开始,它就可以工作。另外,您可以添加以下代码,它仍然有效。但是然后添加一个楼层,它失败了。

添加礼物:with(在scnView.scene = scene之后直接添加)

let sceneTransition = SKTransition.fade(withDuration: 4.0)
scnView.present(scene,
                with: sceneTransition,
                incomingPointOfView: nil,
                completionHandler: nil)

注意:您必须在文件顶部添加“import SpriteKit”以支持SKTransition。如果没有“ship.scn”中的“floor”元素,我的iPad Air 2上的转换代码不会失败(虽然它似乎没有做任何事情)。

但是当你将一个空的“floor”元素拖到“ship.scn”场景中并重新运行时,它会因上面提到的错误而失败。 SceneKit template with floor added

然后,注释掉现在:用代码,它再次起作用。

请注意,模拟器上的失败,但它在我的设备上失败了。我已将iPad Air 2更新到最新的iOS(11.1),并将部署目标设置为相同。

此外,目前:确实可以在iOS 11.1的iPhone 6s上运行。所以这似乎只是一个iPad问题。