我发现将SCNNodes(带有SCNGeometry)添加到场景会导致严重的滞后峰值。
根据Time Profiler,它必须生成几何体(至少函数/方法被调用)。它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作。因此,使用SCNNode创建池将不起作用。
有没有办法摆脱这种滞后?我希望能够在没有任何FPS掉落的情况下将节点添加到场景中。
我到目前为止唯一的想法是将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这不是一个干净的解决方案。
这是Time Profiler的一个镜头:
答案 0 :(得分:6)
看起来你正在添加一个附加了SCNShape
或SCNText
的节点,这些几何形状的创建成本很高(你必须对Bézier曲线进行离散化和三角测量,最终必须倒角的计算和偏移曲线。)
您可以尝试从SCNSceneRenderer
预加载以下方法:-prepareObject:shouldAbortBlock:
,-prepareObjects:withCompletionHandler: