Javascript 无法读取属性';几何学&x27;未定义的three.js的

Javascript 无法读取属性';几何学&x27;未定义的three.js的,javascript,html,three.js,Javascript,Html,Three.js,我有这两个函数,每个函数调用另一个函数。 每次调用“NewSphere”函数时,我都会创建一个球体,并通过在“RemoveSphere”函数中设置位置来移除每个球体。 有时在删除过程中,我会出现以下错误:“无法读取未定义的属性‘几何体’” 行“obj.geometry.dispose();”,我无法删除一些球体。当您使用var obj=scene.getObjectByProperty('uuid',ID'),它得到了未定义的,因为它没有找到任何具有该名称的对象 然后,当您尝试获取它的几何体时,

我有这两个函数,每个函数调用另一个函数。 每次调用“NewSphere”函数时,我都会创建一个球体,并通过在“RemoveSphere”函数中设置位置来移除每个球体。 有时在删除过程中,我会出现以下错误:“无法读取未定义的属性‘几何体’”
行“obj.geometry.dispose();”,我无法删除一些球体。

当您使用
var obj=scene.getObjectByProperty('uuid',ID'),它得到了未定义的
,因为它没有找到任何具有该名称的对象

然后,当您尝试获取它的几何体时,它相当于
未定义的.geometry
,它不存在。您必须想出一种更好的方法来生成
ID
,这样在设置和检索时它是相同的。也许可以将它转换成一个字符串,使用
varid=(x*10)+“uz”


另外,不要覆盖对象的UUID,您可能会用Three.js在内部破坏某些东西。因此,您可以使用
scene.getObjectByName()
检索它

sphere.uuid=ID这行中的
ID
是什么?我尝试为
ID=(X*10)+Z的每个球体创建唯一的编号.uuid
属性,这样做。three.js在内部使用的
uuid
。我认为是这样,不应该改变
uuid
,但我不知道如何移除具有特定位置的球体。。。
function NewSphere(x, z) {
            var sphereGeometry = new THREE.SphereBufferGeometry(10 * factor, 32, 32);
            var sphereMaterial = new THREE.MeshBasicMaterial({ color: SphereColor, wireframe: false });
            var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
            sphere.uuid = ID;
            sphere.position.setX(x);
            sphere.position.setZ(z);

            objects.push(sphere);
            scene.add(sphere);
        }

        function RemoveSphere(Xp, Zp) {
            ID = Xp * 10 + Zp;
            var obj = scene.getObjectByProperty('uuid', ID);

            obj.geometry.dispose();
            obj.material.dispose();
            objects.pop(obj);
            scene.remove(obj);
            renderer.renderLists.dispose();
        }