Unity3d学习之AssetBundle升级使用

  • Unity3d学习之AssetBundle升级使用已关闭评论
  • 16,132 views
  • A+
所属分类:Unity3d 原创文章

* AssetBundle的压缩格式*

AssetBundle支持3中压缩格式

  • LZMA Format :  AssetBundle默认使用的压缩格式,包的大小最小,但是使用前需要全部解压完成
  • LZ4 Format : Unity3d5.3之后支持的格式,包的大小比LZMA的大,但是解压支持各自通道,不需要将资源包完全解压
  • 不压缩,包的大小最大,访问最快。

 可以通过BuildPipeline.BuildAssetBundles

构建AssetBundle时指定

第二个参数来选择压缩方式

BuildAssetBundleOptions

下面看看官方的加载方法和压缩的对比

Unity3d学习之AssetBundle升级使用


*下载加缓存AssetBundle方法*

Unity3d学习之AssetBundle升级使用

WWW.LoadFromCacheOrDownLoad

很明显的意思,就是下载下来缓存在本地

下次加载时如果版本存在就加载本地的

第一个参数,AssetBundle的地址

第二个就是版本号了


*在Editor中使用AssetBundle*

官方建议在Editor中直接就加载本地的资源(还没打包成AssetBundle)

避免开发过程中资源的改变

从而导致频繁的导出制作AssetBundle

用#if UNITY_EDITOR判断

#else    #end


*Unload的作用*

参数false或true

false时释放没有使用过的资源

true时全部释放

下面看看没有释放,在加载

Unity3d学习之AssetBundle升级使用

运行

Unity3d学习之AssetBundle升级使用

报错了

!官方推荐加载完后就卸载它

避免再次加载时就GG

也可以建立一个AssetBundle的管理器

在不需要的时候在卸载


*取得资源的方法*

LoadAsset()//普通加载

LoadAssetAsync()//异步加载

LoadAllAssets()//加载全部

下面看看异步加载

Unity3d学习之AssetBundle升级使用

也成功了,代码差不多

异步加载是用来加载非常非常大的资源

防止游戏磕屁的


*二进制文件*

将后缀改为.bytes

Unity3d会将它当做TextAsset

然后加载时指定类别为TextAsset

转换为TextAsset

最后通过TextAsset.bytes取出数据

还有就是通过AssetBundle加载脚本

无非是想热更新逻辑

但是这种做法不好

去IDE编写脚本

编译成dll,改为.byte

到unity打包成AssetBundle

然后下载加载为二进制

利用反射获取类组件

还有些平台不支持

了解下就好