我有一个循环我的场景以获取特定节点的函数。获得此节点后,它会遍历其子节点并检查是否有任何子节点具有 geometry 或 material 属性。如果他们这样做,那么我dispose()
然后remove
孩子。
在我dispose()
之前,我想检查该子项的 geometry.id 是否与场景中的任何其他子几何id匹配。如果它匹配,那么我不dispose
我只是remove
它。如果它没有任何匹配的几何ID,那么我可以dispose
然后remove
。
答案 0 :(得分:0)
我想你可以尝试引用计数吗?
var counts = {};
// when adding mesh
counts[mesh.geometry.id] = (counts[mesh.geometry.id] || 0) + 1;
// when removing mesh
counts[mesh.geometry.id]--;
if (counts[mesh.geometry.id] == 0) {
// safe to dispose
}