three 整个场景可以深度拷贝吗

发布于 2022-09-12 13:21:54 字数 396 浏览 17 评论 0

使用场景:
场景默认有个网格,坐标线,环境光

每次加载一个不同的场景,需要去清除场景中里面的scene.children对象(非网格,坐标线,环境光), 如果不是深拷贝,每次移除一个children的,foreach的length就会发生变化,部分想移除的children 就没移除

var objects =this.scene.children;

// 清除场景非默认初始化数据

objects.forEach(obj => {

if(obj.name ==='grid'|| obj.name ==='axisHelper'|| obj.name ==='ambientLight') return

this.removeObject(obj)

})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最舍不得你 2022-09-19 13:21:54

用filter吧

this.scene.children = this.scene.children.filter(obj => {
    return obj.name ==='grid'|| obj.name ==='axisHelper'|| obj.name ==='ambientLight';
})
拔了角的鹿 2022-09-19 13:21:54

我现在的操作是把场景的所有children删除,然后在一次初始化网格,坐标线,环境光,总感觉这种做法太恶心,性能也不好,请问有其他的解决方案吗?如何深拷贝一个scene

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文