最近在做一个Unity项目需要使用AssetBundle动态装载外部场景和模型,这里对AssetBundle的加载效率做个总结(仅针对AB在本地磁盘的情况)。
Unity提供了很多种AB的加载方式,不同方式的效率差异其实非常大。加载AB可以分为两个步骤:1、读取AB文件到内存(从磁盘或服务器),2、解压缩成AB内存镜像(针对压缩格式的AB)。如果打包AB时添加了BuildAssetBundleOptions.UncompressedAssetBundle选项则AB文件是未经压缩的。
测试样例:一个博物馆场景,模型较多,烘焙lightmap和navmesh,直接打包到一个AB中
测试结果:
压缩版本:
AB大小:375MB
加载方式 |
下载时间(ms) |
解压时间(ms) |
总时间(ms) |
new WWW |
1406 |
45809 |
47229 |
new WWW + LoadFromMemory |
1410 |
44868 |
46447 |
new WWW + |