首页 > 解决方案 > AssetBundle 缓存过程。缓存 Unity 资产包时会发生什么?ab 的哪些属性使其与其缓存形式不同?

问题描述

这可能是一个非常小众的问题,但是对于 Unity 4 使用的资产包系统,资产包和缓存包之间的具体区别是什么?我很好奇缓存文件与资产包有何不同,以及两种类型的文件有哪些不同的属性(如果有的话)?IE 缓存资产包时会发生什么WWW.LoadFromCacheOrDownload

不幸的是, Unity没有记录这个过程,因为开源代码调用了一个INTERNAL_CALL_WWW(this, url, ref hash, crc)名为反编译的 5.3.2p2 代码2017+ 代码在 Unity 官方 GitHub 上,但似乎与 Unity 2015 代码不同)。

Unity 2017 代码导致private extern static IntPtr CreateCached(DownloadHandlerAssetBundle obj, string url, string name, Hash128 hash, uint crc);外部方法,也没有记录。

此外,当缓存资产包以便引擎可以识别文件在缓存中并且不需要下载时,实际会发生什么?它只是简单地在缓存中搜索散列名称,还是做一些更复杂的事情?

霜冻

标签: unity3dcachinggame-engineassetbundle

解决方案


我可以清楚地看到创建的资产包(那些放在服务器上以供稍后下载)和缓存的资产包(那些在运行时下载一次并存储到设备)之间的大小差异。在 Windows 上,您可以在 %appdata%/Local Low/Unity/company+name_of_app 找到它们。缓存版本通常压缩程度较低,因此应用程序可以更快地加载它们,而存储在服务器上的版本压缩程度更高,因此下载所需的带宽更少。内容应该相同,但使用不同的方法压缩。有关更多详细信息,请参阅此文档页面


推荐阅读