2017-11-13 7 views
1

私は影を投げるためにスポットライトオーバーヘッドを配置するARKitシーンを持っています。Scenekit/ARKitでshadowMode = deferredのライトを削除するには?

私は透明な平面に影を投影したいので、私はスポットライトでプロパティshadowModeを遅延(https://developer.apple.com/documentation/scenekit/scnshadowmode/1523758-deferred)に設定しました。

これは動作しますが、私は再びスポットライトを削除すると、使用してアプリケーションがクラッシュ:shadowModeは(デフォルトは「前方」)に設定されていない場合

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

アプリは、クラッシュしません

クラッシュすることなくライトを削除するにはどうすればよいですか?

+0

コードのこの部分がなければ助けはありませんが、宣言する前にシャドウのプロパティを設定したようです。 – Zydnar

答えて

1

私は、ノードを削除する前に光が入っているノードでnode.hidden = Yesを設定する必要があることを知りました。これはクラッシュを防ぎます:

if(node.light) { 
    node.hidden = YES; 
    [node removeFromParentNode]; 
} 
関連する問題