crash - SceneKit presentScene(_withTransition :incomingPointOfView completionHandler) crash with dynamically loaded SCNScene

标签 crash scenekit

我正在尝试从一个场景过渡到另一个场景,但是当我调用 presentScene 时发生崩溃! 场景未存储在类中或被引用,它们直接加载到 presentScene 调用中。

Xcode 崩溃截图: crash screencap

我的简单最小项目在这里:https://dl.dropboxusercontent.com/u/6979623/SceneKitTransitionTest.zip

MKScene 只是 SCNScene 的一个子类,因为我想知道一个场景何时被取消以确保它就是它。

self.gameView!.scene = MKScene(named:"art.scnassets/scene1.scn")

然后我打电话

let scnView:SCNView = self.gameView! as SCNView
let skTransition:SKTransition = SKTransition.crossFadeWithDuration(1.0)
skTransition.pausesIncomingScene = false
skTransition.pausesOutgoingScene = false
self.sceneToggler = !self.sceneToggler
// transition
scnView.presentScene((self.sceneToggler ? MKScene(named:"art.scnassets/scene1.scn")! : MKScene(named:"art.scnassets/scene2.scn")!), withTransition:skTransition, incomingPointOfView:nil, completionHandler:nil)

如果我在类里面保留对场景的引用,那么它就可以工作——但这​​不是我想要的。我只想转换到不同的场景并将当前场景留在后面。

为什么会崩溃? 这似乎是一项简单的任务……

最佳答案

这是 SceneKit 中的一个错误。解决方法:在调用“presentScene”之前保留对传出场景的引用,并在调用之后释放它。

关于crash - SceneKit presentScene(_withTransition :incomingPointOfView completionHandler) crash with dynamically loaded SCNScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34482115/

相关文章:

.net 程序在用户计算机上启动时崩溃,但在开发工作站上没有

iphone - 网站导致移动Safari崩溃(可复制)

ios - 列出附加到 SCNNode 的所有 CAAnimation

swift - 如何在 SceneKit 中的两点之间画一条线?

swift - 从一个结构转换为另一个

android - 为什么键盘滑动会使我的应用程序崩溃?

iphone - iPhone应用程序崩溃,没有任何日志

ios - 实时更改 SCNAudioPlayer 的音量 - Swift

c++ - 使用删除使我的计算机崩溃

xcode - Godot 接管了 Xcode 中的 .scn 文件