abaojin 开发工程师

unity assetbundle

2020-06-25

介绍

AssebBundle是Unity引擎处理资源方式,一个AssetBundle可以包含一个或多个Unity识别的Asset,今天 就简单聊聊AssetBundle关键技术点。

打包

使用BundleName方式构建AssetBundle。

  • 每一个AssetBundle可以包含1个或多个Asset,具体可以是贴图,动画,材质甚至是场景。
  • 打包必须处理好AssetBundle与另一个AssetBundle之间的依赖, 否则容易造成资源冗余。

压缩

  • 不压缩
  • LZMA 压缩率比较高,但是压缩时间和解压时间都比较慢
  • LZ4 压缩比相对较低,但是压缩时间和解压时间都比较快(推荐方式)

加载

  • AssetBundle.LoadFromFile 同步
  • AssetBundle.LoadFromFileAsync 异步
    • 推荐加载方式,效率高,节省内存
    • 加载只会加载AssetBundle头信息,不会加载具体Asset资源
    • 只能加载使用LZ4方式压缩资源,不支持LZMA压缩的资源
  • AssetBundle.LoadFormMemory 同步
  • AssetBundle.LoadFormMemoryAsync 异步
  • AssetBundle.LoadFormStream 同步
  • AssetBundle.LoadFormStreamAsync 异步
    • 不推荐加载方式,效率一般,主要浪费内容,必须先把资源加载成字节流
    • 内容最少占用2份,如果资源采用加密方式,可以考虑这种方式

注意事项

加载AssetBundle.LoadFromFile(Async)加载资源只加载AssetBundle头信息,是在Unity5.4之后版本支持的。

参考资料

Unity Compress Unity AssetBundle


Similar Posts

评论