为了避免重复加载资源,当资源被加载完成之后,会被缓存在 ResourceManager 内。缓存本身会占用内存和显存,当开发者不再需要缓存的内容时,需要手动去释放缓存的内容。
注意:资源之间是相互依赖的。
例如下图展示的实体包含 MeshRenderer 组件,依赖于 Material, Material 可能被多个 MeshRenderer 引用,如果释放 Material ,那么引用此的其他 MeshRenderer 则会找不到该 Material 而报错。
注意:JavaScript 无法追踪对象的引用。 一般在 JavaScript 等弱类型语言中,是没有提供给开发者内存管理的功能的,所有对象的内存都是通过垃圾回收机制来管理,你没有办法去判断对象什么时候会被释放,所以没有析构函数(destructor)去调用引用资源的释放。
ResourceManager
提供了一套基于引用计数的资源释放,需要开发者手动调用 gc:
engine.resourceManager.gc();