H5W3
当前位置:H5W3 > 问答 > 正文

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

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

每次加载一个不同的场景,需要去清除场景中里面的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)

})

回答

用filter吧

this.scene.children = this.scene.children.filter(obj => {
    return obj.name ==='grid'|| obj.name ==='axisHelper'|| obj.name ==='ambientLight';
})

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

未经允许不得转载:H5W3 » three 整个场景可以深度拷贝吗

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址