如何在Scenekit / ARKit中删除shadowMode = deferred的灯光?

时间:2017-11-13 17:23:25

标签: ios scenekit arkit

我有ARKit场景,我把聚光灯投射到阴影上。

因为我想在透明平面上投射阴影,所以我在聚光灯下将属性shadowMode设置为延迟(https://developer.apple.com/documentation/scenekit/scnshadowmode/1523758-deferred)。

这样可行,但当我再次移除聚光灯时,应用程序崩溃:

[SceneKit] Error: The shadow node is not registered
[SceneKit] Error: _willExecuteDeferredShadows - no light

当没有设置shadowMode时,应用程序不会崩溃(默认为"转发")

如何在不崩溃的情况下移除灯光?

1 个答案:

答案 0 :(得分:2)

我发现在删除之前我需要在包含灯光的节点上设置node.hidden = Yes。这可以防止崩溃:

if(node.light) {
  node.hidden = YES;
  [node removeFromParentNode];
}