在我正在研究的这个项目中,我展示了几个Collada模型,然后在不再需要时将其移除。在项目的某个地方似乎存在内存泄漏,我正在寻找方法让它尽可能顺畅地运行,因为时间不在我身边...... 我觉得我没有以正确的方式移除网格,这可能会导致我的一些内存泄漏。
我用LoadObject(level_1_character, "Assets/Level_1_Character.dae");
加载对象,例如level_1_character
是Object3D。这会调用以下函数:
function LoadObject(name, url) {
var mesh, geometry, material, animation;
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load(url, function(col) {
mesh = col;
geometry = col.scene;
name.name = url.toString();
name.add(geometry);
});
}
我根据scene.add(level_1_character);
的级别将对象添加到场景中,然后通过执行以下操作将其删除:
level_1_character.traverse(function(child){
if (child instanceof THREE.Mesh) {
child.material.dispose();
child.geometry.dispose();
}
});
我不确定这是否真的完全删除了对象。似乎对象仍然存在于内存中。知道我在这里做错了吗?