我正在尝试寻找在不破坏场景本身的情况下清除场景中所有对象的方法。我知道命名对象是一种方式,然后当我们想要删除对象时,我们只是通过它的名字“得到”它。但是,我想找到一种快速的方法来清除其中所有对象的场景,而不管它们的名称。有简单的方法吗?谢谢!
最佳答案
可以遍历场景的子对象,将它们一一移除。
正如评论中所建议的那样,这应该以相反的顺序完成,以免修改您正在迭代的元素。
while(scene.children.length > 0){
scene.remove(scene.children[0]);
}
注意:这只是对对象层次结构的快速而肮脏的清除。如果你打算经常这样做,你可能会遇到上面代码中内存泄漏的风险,因为渲染器引用了对象的 Material 、纹理和几何图形。彻底清理现场更加复杂,还有很多其他问题需要更详细地讨论:
关于javascript - 如何清除 THREE.JS 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359830/