1

我正在尝试使用 aframe 创建一个多房间环境。在每个房间中,都会有一些对象可以与之交互,这些模型是从 glTF 或 OBJ 文件加载的。

在手机上,我们的内存非常有限,所以我想在用户传送/移动到另一个房间时清除未使用的模型。但我不知道如何实现这一目标。我发现了一些建议使用的相关问题document.querySelector('a-scene').systems.material.textureCache,但我没有在那里找到我的模型(因为它是模型,而不是纹理)。我尝试过使用THREE.Cache方法,但是有了它,我只能缓存一些数据,根本不行。

我正在使用这样的模型(创建实体):

<a-gltf-model id="m4_obj" src="/models/m4a1/scene.gltf" position="0.713 1 -5.156" scale="0.1 0.1 0.1" ></a-gltf-model>

所以,我尝试清除缓存: https ://i.imgur.com/cYJeegP.png

快照 22 是在加载后拍摄的。

快照 23 是在执行后拍摄的document.getElementById("m4_obj").parentNode.removeChild(document.getElementById("m4_obj"));

执行此操作后拍摄了快照 24:

for (let elem in THREE.Cache.files){
    if (elem.startsWith('/models/m4a1/')){
        THREE.Cache.remove(elem)
    }
}

/models/m4a1/- 是一个包含我要删除的模型的文件夹。但是如果我评论这个对象,我的快照就变成了 56mb!https://i.imgur.com/lznA3q5.png

那么,我应该如何正确地从场景中移除模型,以完全处理它?谢谢!

4

0 回答 0