|
Unity支持三压缩选项资产捆绑:LZMA,lz4,和压缩。
LZMA格式
默认情况下,当资产包建,它们被存储在一个压缩格式。标准的压缩格式是一个单一的LZMA算法序列化的数据流和文件,需要解压缩的全部使用前。
LZMA压缩包给最小的下载大小,但相对缓慢减压造成明显的加载时间。
lz4格式
统一也支持lz4压缩,从而导致更大的压缩文件的大小,但不需要整个束之前被解压缩使用。lz4是“基于块的算法,因此当对象从一个lz4压缩包装,只为对象进行解压缩相应的块。这发生在飞,意思是没有等待时间,之前被解压缩使用整个束。介绍了统一格式的lz4 5.3和以前的版本不可用。
未经压缩的格式
第三是没有压缩的压缩选项。压缩包是大的,但是是最快的访问一旦下载。
压缩包缓存
这个www.loadfromcacheordownload功能下载并缓存到磁盘和资产束大大加快加载之后。 从统一5.3起,缓存的数据也能被压缩的lz4。这节省了40%–60%空间相比,压缩包。压缩发生在下载,因此几乎无法察觉的最终用户。当数据到达从插座,统一将解压缩和压缩在lz4格式。下载流发生再压缩,这意味着缓存压缩就开始了足够的数据下载,并继续增加直到下载完成。之后,数据块的减压需要时从缓存读取束飞。
缓存压缩默认是启用的,是由caching.compressionenabled财产它影响包缓存到磁盘上和内存中存储。
资源包加载API概述
此表提供的内存和性能方面的开销比较时,使用不同的压缩类型和不同的加载方法。
未经压缩的 Chunk Compressed ( LZ4 ) 流压缩(LZMA)
WWW * 内存:压缩包的大小(而不是压缩包WWW设置大小)。性能:没有额外的处理。 内存:lz4hc压缩包的大小(而不是设置WWW,lz4hc压缩包大小)。性能:没有额外的处理。 内存:lz4压缩包的大小(而不是设置www,LZMA压缩包大小)。性能:LZMA压缩过程中减压lz4下载。
loadfromcacheordownload MEM:没有额外的内存使用。性能:从硬盘读取。 MEM:没有额外的内存使用。性能:从硬盘读取。 MEM:没有额外的内存使用。性能:从硬盘读取。
loadfrommemory(异步) 男:uncompressed束大小。四:没有额外的处理。 lz4hc,压缩包的大小。方法:在额外的处理。 MEM:lz4压缩包大小。性能:lz4 LZMA压缩解压。
LoadFromFile(异步) MEM:没有额外的内存使用。性能:从硬盘读取。 MEM:没有额外的内存使用。性能:从硬盘读取。 MEM:lz4压缩包大小。性能:从磁盘读lz4 LZMA压缩解压。
WebRequest(也支持缓存) MEM:压缩包大小。性能:没有额外的处理[阅读]如果从磁盘缓存。 MEM:lz4hc压缩包大小。性能:没有额外的处理[阅读]如果从磁盘缓存。 MEM:lz4压缩包大小。性能:LZMA压缩解压lz4从磁盘读取缓存中下载[如果]。
*当下载一个包使用WWW,WebRequest还有一个8x64kb蓄电池缓冲存储的数据从一个插座。
因此,使用下面的指南,当使用低级别的加载API在你的游戏:
部署资产包与游戏为streamingassets使用buildassetbundleoptions.chunkbasedcompression当建筑束和assetbundle.loadfromfileasync加载它。这是给你的数据压缩与相等的读取缓冲区的内存开销尽可能快的加载性能。
下载资产捆绑视频-使用默认编译选项(LZMA压缩),LoadFromCacheOrDownload / WebRequest下载和缓存。在这里你会有最好的压缩比和assetbundle.loadfromfile加载性能进一步负载。
加密包-选择加载buildassetbundleoptions.chunkbasedcompression和使用loadfrommemoryasync(这是几乎唯一的场景,loadfrommemory [同步]应使用)。
使用自定义的压缩buildassetbundleoptions.uncompressedassetbundle建立和assetbundle.loadfromfileasync加载束后采用自定义的压缩算法。
你应该总是选择异步功能-他们不失速的主线,他们允许加载操作进行排队,更有效。绝对避免调用同步和异步函数在同一时间,这可能将在主线程打嗝。
兼容性
该资产包的容器格式改为支持新的压缩型,并为进一步的改进提供依据。Unity 5还支持在统一4创建的捆绑,但是捆绑在早期版本创建的(2 x 3 x)不支持。
建筑assetbundles
|
|