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

标签 swift scenekit

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

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

我想知道是否有更有效的方法来添加和删除这些可能消除延迟的节点?由于这些节点在外观上都是相同的,因此多次克隆一个节点会比在 for 循环中一遍又一遍地重新创建相同的节点更好吗?

任何有关效率或更好做法的建议也将不胜感激。

谢谢!

编辑: 只是一个想法,我是否应该在每个需要的位置都有一个节点,基本上取消隐藏并在需要时给他们行动,一旦他们完成他们的工作,淡出,放回初始位置,删除 Action 并隐藏?

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

最佳答案

首先打开统计数据。

scnView.showStatistics = YES;

点击屏幕左下角的 + 进入统计屏幕。

可能导致延迟的原因是什么?要快速检查的事情是:

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

克隆更好。

关于swift - 高效地添加和删除多个节点,没有任何延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128886/

相关文章:

swift 4 : how to wait for a MKMapView to be loaded before adding pins

ios - 如何等到动画在 Swift 中完成?

swift - 如何访问嵌套在结构中的结构

ios - 如何在滚动 Collection View 内的 TableView 时隐藏导航栏

ios - "Stick"UIView和SCNNode一起做动画

ios - 照片选择器,选择后,图像太大

ios - 如何将纹理(图像)添加到 SceneKit 模型,使其均匀覆盖模型(网格)?

swift - SCNGeometryElement 在 Swift 3 中的设置

ios - 无法显示缓存目录中的 3d 文件

camera - 在 SceneKit 中设置相机的视角