- A+
* AssetBundle的压缩格式*
AssetBundle支持3中压缩格式
- LZMA Format : AssetBundle默认使用的压缩格式,包的大小最小,但是使用前需要全部解压完成
- LZ4 Format : Unity3d5.3之后支持的格式,包的大小比LZMA的大,但是解压支持各自通道,不需要将资源包完全解压
- 不压缩,包的大小最大,访问最快。
可以通过BuildPipeline.BuildAssetBundles
构建AssetBundle时指定
第二个参数来选择压缩方式
BuildAssetBundleOptions
下面看看官方的加载方法和压缩的对比
*下载加缓存AssetBundle方法*
WWW.LoadFromCacheOrDownLoad
很明显的意思,就是下载下来缓存在本地
下次加载时如果版本存在就加载本地的
第一个参数,AssetBundle的地址
第二个就是版本号了
*在Editor中使用AssetBundle*
官方建议在Editor中直接就加载本地的资源(还没打包成AssetBundle)
避免开发过程中资源的改变
从而导致频繁的导出制作AssetBundle
用#if UNITY_EDITOR判断
#else #end
*Unload的作用*
参数false或true
false时释放没有使用过的资源
true时全部释放
下面看看没有释放,在加载
运行
报错了
!官方推荐加载完后就卸载它
避免再次加载时就GG
也可以建立一个AssetBundle的管理器
在不需要的时候在卸载
*取得资源的方法*
LoadAsset()//普通加载
LoadAssetAsync()//异步加载
LoadAllAssets()//加载全部
下面看看异步加载
也成功了,代码差不多
异步加载是用来加载非常非常大的资源
防止游戏磕屁的
*二进制文件*
将后缀改为.bytes
Unity3d会将它当做TextAsset
然后加载时指定类别为TextAsset
转换为TextAsset
最后通过TextAsset.bytes取出数据
还有就是通过AssetBundle加载脚本
无非是想热更新逻辑
但是这种做法不好
去IDE编写脚本
编译成dll,改为.byte
到unity打包成AssetBundle
然后下载加载为二进制
利用反射获取类组件
还有些平台不支持
了解下就好