2017-02-09 47 views
0

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

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

我想知道是否有更有效的方法来添加和删除这些节点,可能可以消除滞后?由于这些节点都明显相同,因此多次克隆一个节点会比在for循环内重复创建相同节点更好?

任何意见的效率或更好的做法,将不胜感激。

谢谢!只需要一个念头,我是否应该在每个需要的位置都有一个节点,并且在需要的时候基本上不会隐藏并给予他们动作,一旦他们完成了工作,淡出,放回到初始位置位置,移除动作并隐藏?

这意味着我在任何时候都需要场景中的大约20个节点,但至少不需要再添加任何内容或删除任何内容。

回答

1

通过打开统计信息开始。

scnView.showStatistics = YES; 

单击屏幕左下角的+到统计屏幕。

什么可能导致滞后?快速检查是:

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

克隆效果更好。

1

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

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