写在最前
有很多想学assetbundle的同学不知如何下手,英文资料看起来有高度,我把他翻译了,后者自取
翻译原址:unity官网assetbundle https://docs.unity3d.com/2017...
资源包
一个assetbundle其实就是一个存档文件(我更觉得它像压缩文件)它包含了很多具体平台的资源(模型,贴图,预制,声音,甚至整个场景)用于在运行时被加载。assetbundles可以明确互相依赖的关系,例如一个assetbundle A中的材质可以引用assetbundle B中的贴图。为了有效率的在网络中进行传输,assetbundles可以被压缩成unity中内置的算法,当然取决于他的用途来要求(压缩格式有LZMA 和 LZ4).
assetbundles 也可以被当做可下载的内容,这样可以减少安装包本身的大小,可以将这部分资源放到服务器去,根据用户的平台去下载相应的资源(因为不同的平台资源是不同的,不能混淆)并且可以减少运行时内存的压力(因为不用将全部的资源一下子加载到内存中去,根据情况需要加载不同的assetbundle)
一个assetbundle包中是什么
这是一个不错的问题,实际上"assetbundle"指的是两个不同的东西,当然是根据需要而决定的
第一个实际上就是存储在磁盘上的文件,我们将它称之为assetbundle压缩文件,更或者是简称存档文件。可以把这个压缩文件想象成一个容器,就好像一个文件夹包含了许许多多额外的的文件,这些额外的文件由两种类型组成,一个是序列化文件另一个则是资源文件本身。这些序列化文件包含了你的资源被变成了自定义object写入的一个文件(这个文件记录了这个assetbundle的信息)。另一个资源文件就是一块一块的二进制数据被分开存储某些资源(texturex,audio)以方便我们可以有效的用线程去从磁盘上加载他们。
第二个指的是当你通过代码去与一个assetbundle对象加载资源从一个具体的assetbundle。assetbundle对象包含了你添加进去的所有资源并由一个对应的映射文件,当你去需要加载一个资源时你需要对它进行请求。
2017-05-15 published