SceneKit - 向场景添加新的 SCNNode 会导致严重滞后

SceneKit - Adding a new SCNNode to the scene causes severe lag

我发现向场景中添加 SCNNode(使用 SCNGeometry)会导致严重的滞后峰值。

根据 Time Profiler,它必须生成几何图形(至少 functions/methods 是这样调用的)。它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作。因此,使用 SCNNodes 创建池将不起作用。

有没有办法消除这种延迟?我希望能够在不降低 FPS 的情况下向场景添加节点。

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

这是 Time Profiler 的截图:

看起来您正在添加一个附有 SCNShapeSCNText 的节点,并且创建此类几何图形的成本很高(您必须对贝塞尔曲线进行离散化和三角剖分,最终必须计算和偏移倒角的曲线)。

您可以尝试从 SCNSceneRenderer 中预加载以下方法:-prepareObject:shouldAbortBlock:-prepareObjects:withCompletionHandler: