Object3D.getObjectByName()
Object3D.getObjectByName()
是一个用于在 Object3D
对象中通过名称查找子对象的方法。它将返回第一个名称与提供的字符串匹配的子对象。如果找不到匹配项,则返回 null
。
obj.getObjectByName( name )
null
。以下示例创建一个空 Object3D
对象,并添加名为 cube
和 sphere
的两个立方体和球体子对象。
const cubeGeometry = new THREE.BoxGeometry(1, 1, 1);
const cubeMaterial = new THREE.MeshBasicMaterial({color: 0xffff00});
const cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
cube.name = "cube";
const sphereGeometry = new THREE.SphereGeometry(1, 32, 32);
const sphereMaterial = new THREE.MeshBasicMaterial({color: 0xff00ff});
const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
sphere.name = "sphere";
const group = new THREE.Object3D();
group.name = "group";
group.add(cube, sphere);
console.log(group.getObjectByName("cube")); // returns cube mesh
console.log(group.getObjectByName("sphere")); // returns sphere mesh
console.log(group.getObjectByName("nonexistent")); // returns null
Object3D
对象可以包含多个层级和重复名称的子对象。在查找特定名称的子对象时,getObjectByName()
方法只会返回第一个找到的匹配项。因此,当有多个同名子对象时,可能需要用其他方法来访问特定对象,例如访问其父级对象并使用 children
属性来检索所有子对象。Object3D
对象的名称是可选的,因此可以使用 getObjectById()
或其他方法来访问子对象。相反,如果确保了对象名称的唯一性,则 getObjectByName()
方法可能是最简便的访问子对象的方法之一。