Unity3D/VR

关于AssetBundle解压的讨论结果

2017-03-05  本文已影响345人  笛音夏扇

在讲WWW的时候有这样一段话【解压后的内容,通常为原Bundle文件的4~5倍大小,纹理资源比例可能更大】,在我理解就是www这样的方式获取到的资源(压缩形式的)会被解压缩,并放置到webstream中。而在【AssetBundle加载进阶】部分的【前者劣势】部分,又有【每次加载都涉及到解压操作】,请问这个【加载】指的是什么?是www.assetBundle还是AssetBundle.Load?还有【解压缩】是指的什么?不是在WWW的时候已经解压缩了吗?

是这样的,我们所说的AssetBundle【加载】指的是New WWW(或其他加载AB的API)和www.assetbundle的统称,而真正的【解压】过程,是在New WWW进行的。同时,需要说明的是,这个是5.3版本之前Unity对于AssetBundle的处理方式,5.3版本后,由于Unity新增了LZ4压缩方式,所以如果AssetBundle在制作时已经是LZ4格式的,那么在加载时就已经不会在进行解压了。

那么【每次加载都涉及到解压操作】是不是可以这样理解:对于new WWW实际是解压到webstream。而如果是用的LoadFromCacheOrDownload,那么资源是在磁盘的,所以在调用www.assetbundle时才做解压。或者正如你说的只要是加载AB的API,都会有一个解压过程。那么有个问题,如果使用直接获取AssetBundle的那些API,解压过程是怎样的呢?CreateFromFile是在调用assetbundle.load的时候从磁盘解压,CreateFromMemory是直接解压到webstream?还有个问题,对于WebStream来说,同一个www对象多次调用www.assetbundle方法时,得到了栈上的多个变量,但是这些变量都指向同一个WebStream中的对象吗?

在5.3之前,如果需要解压,都在四个API(New WWW、CreateFromFile、LoadFromMemory、LoadFromCache等)中进行,而不是在后面执行

CreateFromFile在4.x的API,只能加载非压缩的AB,而在5.0以后,对应的是LoadFromFile,5.3之后可以加载任何压缩格式的AB了

This occurs on-the-fly, meaning there are no wait times for the entire bundle to be decompressed before use.

上一篇 下一篇

猜你喜欢

热点阅读