参数为true的时候,是一次比较彻底的内存释放,资源包和所有被加载出的资源都会被释放,当然实例化的obj不会被释放,但引用关系会被破坏,所以在使用这种方式前必须提前销毁所有实例化对象。
AssetBundle最佳释放策略:
实例化的对象使用Destroy这个不加累述了。
已经加载的资源prefab,如果消耗巨大而且明确不再使用,可以直接使用Object.Destroy释放。
如果AssetBundle能够一次性加载完成所需资源的,可以使用AssetBundle.Unload(false)将AssetBundle的内存立刻释放,然后再场景切换以后通过Resources.UnloadUnusedAssets方法释放所有加载的资源,这种方案的缺陷是不能在AssetBundle.Unload以后再次使用该AssetBundle。
如果在场景运行过程中需要不断从AssetBundle加载资源,在这种情况下无须提前做任何释放行为,可以在场景切换以后,最终调用AssetBundle.Unload(true) 将全部资源包和资源释放。这种方式的主要缺陷是,AssetBundle占用的资源会在整个场景过程中一直存在,造成内存浪费,但如果AssetBundle体积不大,这种方式也带来了一定的灵活性。