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() 方法可能是最简便的访问子对象的方法之一。