【问题标题】:Remove child objects from Object3D从 Object3D 中移除子对象
【发布时间】:2025-12-16 02:05:01
【问题描述】:

如果我按以下方式创建对象:

var group = new THREE.Object3D();

for (var i = 0; i < 10; i++) {

    geometry = new THREE.BoxGeometry(1, 1, 1);
    material = new THREE.MeshNormalMaterial();
    mesh = new THREE.Mesh(geometry, material);

    group.add(mesh);

}

scene.add(group);

那么,我如何从该组中删除这些对象?

我试过这样做......

for (var i = group.children.length - 1; i >= 0; i--) {

    scene.remove(group.children[i]);

}

...但它输出为“未定义”。我在这里做错了什么?

【问题讨论】:

  • 也许:group.remove(group.children[i]);?
  • 谢谢。这行得通!

标签: javascript three.js


【解决方案1】:
for (var i = group.children.length - 1; i >= 0; i--) {
    group.remove(group.children[i]);
}

【讨论】:

    【解决方案2】:

    你可以在一行中做到这一点。

      group.remove(...group.children);
    

    【讨论】:

    【解决方案3】:

    你可以使用

    object.children = [];
    

    【讨论】: