SCNAction导致场景工具包渲染器崩溃



我有一个在AR环境中设置的由几个棋盘组成的游戏。

我需要在某个时刻让一些棋盘眨眼。

我在场景的渲染器循环中执行SCNAction,如下所述。

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)
{
if Blink { TargetNode.runAction(SCNAction.repeat(SCNAction.sequence([SCNAction.hide(), SCNAction.wait(duration: 1), SCNAction.unhide(), SCNAction.wait(duration: 1)]), count: 10)) }
}

TargetNode是一个由数百个子节点组成的节点(棋盘中的一个,所有单元格都是单独的节点,棋子也都是单独节点,都是TargetNode的子节点(。闪烁是在其他地方定义的标志。

几秒钟或几分钟后,我出现了一个错误:

com.apple.sceneekit.scnview-renderer(16(:EXC_BAD_ACCESS(代码=1,地址=0x68(

在阅读了一些关于这个问题的文献后,我明白了在渲染器线程中进行节点修改是强制性的,这里就是这样。至少它是从渲染器线程调用的。

我猜SCNAction的构建方式并不能真正确保它按预期执行。

有没有办法以不同的方式做到这一点,或者(最好(确保SCNAction的执行?

Thx

对不起,我做Scenekit已经有一段时间了。。。但我认为正在发生的事情。。。

每次浏览渲染器时,闪烁都会打开,所以它正在重新排队或只是排队操作,这可能就是它绑定的原因。由于你重复了10次,所以你只想启动一次。如果(闪烁({加载一次操作并关闭闪烁。}

只是一个想法

相关内容

  • 没有找到相关文章

最新更新