繁体   English   中英

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

[英]SCNAction causing scene kit renderer to crash

我在 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 的子节点)。 Blink 是在别处定义的标志。

几秒钟或几分钟后,我得到一个错误:

com.apple.scenekit.scnview-renderer (16): EXC_BAD_ACCESS (code=1, address=0x68)

在阅读了有关此问题的一些文献后,我开始明白必须在渲染器线程中进行节点修改,这里就是这种情况。 至少它是从渲染器线程调用的。

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

有没有办法以不同的方式执行此操作或确保此 SCNAction 的执行(最好)?

谢谢

抱歉,自从我做了 Scenekit 以来已经有一段时间了……但我想发生了什么……

每次通过渲染器 go 时,闪烁都会打开,因此它正在重新排队或只是排队操作,这可能是它绑定的原因。 由于您要重复 10 次,因此您只想启动它一次。 If (Blink) { 加载一次您的操作并关闭 Blink。}

只是一个想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM