认识Unity中AssetBundle
以下情况仅适用于lz4方式打包的bundle文件。
AssetBundle.LoadFromFile函数加载bundle文件时,并不会将所有可使用的资源加载进来,它占用内存的大小与声明资源的数量有关系。 如上图所示,ui_gfx内因声明了29000多个资源,导致占用空间最大。而实际bundle文件最大的dl_background因内部仅一个资源,占用空间最小。
资源的释放:
加载的prefab,不需要时只需要将它置为null就可以了,不能Destroy和Resources.UnloadAsset。设置为null之后,它所引用的材质及纹理等是不会释放的,可以通过调用Resources.UnloadUnusedAssets进行释放。
加载的Audio、Texture等资源,是可以调用Resource.UnloadAsset进行释放的。
AssetBundle.Unload方法将释放上图中的内存,当参数设置为false时是不会释放加载出来的资源的,所以当再次加载里面的资源时,将出现多份相同资源的情况。