U2L10-3——Resources资源卸载

本章代码关键字

1
2
Resources.UnloadAsset()            //卸载指定的内存内缓存的资源,不能释放GameObject对象
Resources.UnloadUnusedAssets() //卸载未使用的资源,一般在过场景时和GC一起使用

Resource是重复加载会浪费内存吗?

其实Resources​加载过一次资源后,该资源就一直存放在内存中作为缓存
第二次加载时发现缓存中存在该资源,会直接取出来使用,所以多次重复加载不会浪费内存
但是会浪费性能(每次加载都会去查找取出,始终伴随一些性能消耗)

如何手动释放掉缓存中的资源

卸载指定资源

注意:该方法不能释放****​GameObject对象 因为它会用于实例化对象
它只能用于一些不需要实例化的内容:比如图片 和 音效 文本等
一般情况下 我们很少单独使用它

1
Resources.UnloadAsset()

该方法不能释放****​GameObject对象 因为它会用于实例化对象,即使该对象没有被实例化也会不能卸载! 运行以下代码会报错!!!

1
2
GameObject obj = Resources.Load<GameObject>("Cube");
Resources.UnloadAsset(obj); //该方法不能释放GameObject对象!!

卸载未使用的资源

注意:一般在过场景时和GC一起使用

1
Resources.UnloadUnusedAssets();