SceneKit - 向场景添加新的SCNNode会导致严重延迟

Max*_*Max 4 performance xcode objective-c ios scenekit

我发现将SCNNodes(带有SCNGeometry)添加到场景会导致严重的滞后峰值.

根据Time Profiler,它必须生成几何(至少函数/方法被称为).它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作.因此,使用SCNNodes创建池将不起作用.

有没有办法摆脱这种滞后?我希望能够在没有任何FPS丢弃的情况下向场景添加节点.

到目前为止,我唯一的想法是将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这不是一个干净的解决方案.

这是Time Profiler的一个镜头:

在此输入图像描述

mnu*_*ges 7

看起来您正在添加一个带有SCNShapeSCNText附加到它的节点,这些几何形状的创建成本很高(您必须对Bézier曲线进行离散化和三角测量,最终必须计算和偏移倒角曲线).

你可以尝试从预装以下方法SCNSceneRenderer:-prepareObject:shouldAbortBlock:,-prepareObjects:withCompletionHandler: