有效添加和删除多个节点,没有任何延迟

时间:2017-02-09 05:26:17

标签: swift scenekit

在我的游戏中,在特定的时间间隔,调用一个函数,将多个节点添加到场景中(2到6个节点之间)。这些单独的节点都是相同的 - 它们由相同的搅拌器模型,相同的SCNCone,相同的聚光灯和相同的物理体组成 - (搅拌器模型是低聚物,没有极端)。

当需要调用下一个节点间隔时,先前调用的节点将被删除(包括其操作)。这个过程一直重复,直到玩家死亡。现在,当删除节点并添加新节点时,它会产生明显滞后大约一秒钟,并且看起来不平滑。

我想知道是否有更有效的方法来添加和删除这些可能消除延迟的节点?既然这些节点都明显相同,那么多次克隆节点要比在for循环中反复重新创建同一个节点好吗?

关于效率或更好的做法的任何建议也将受到高度赞赏。

谢谢!

编辑:只是想一想,我是否应该在每个所需位置都有一个节点,并且基本上不隐藏并在需要时给予他们操作,一旦他们完成工作,就会淡出,放回初始位置,删除操作并隐藏?

这意味着我总是需要场景中大约20个节点,但至少不需要再添加或删除任何节点。

2 个答案:

答案 0 :(得分:1)

首先打开统计信息。

scnView.showStatistics = YES;

点击屏幕左下方的+到统计屏幕。

可能导致滞后的原因是什么?要检查的快速事项是:

1. Is the geometry too complex?  
2. Are the textures too large?
3. Are there too many draw calls?

克隆更好。

答案 1 :(得分:1)

是的,我认为你的想法最终会避免滞后。如果添加的节点与被删除的节点相同,则隐藏和重置它们会更有效。

如果每次造成延迟时都会创建节点,甚至可以从场景中删除并添加它们,而不是在需要时创建它们将它们存储在阵列中以备重用。