如何解决AssetBundle 缓存过程缓存 Unity 资产包时会发生什么? ab 的哪些属性使其与其缓存形式不同?
这可能是一个非常小众的问题,但是对于 Unity 4 使用的资产包系统,资产包和缓存包之间的具体区别是什么?我很好奇缓存文件与资产包有何不同,以及两种类型的文件有何不同的属性变化(如果有的话)? IE。当资产包通过 WWW.LoadFromCacheOrDownload
缓存时会发生什么?
遗憾的是,Unity 没有记录这个过程,因为开源代码调用了一个名为 INTERNAL_CALL_WWW(this,url,ref hash,crc)
的内部函数,该函数被赋予 WWW 的实例、URL 的字符串、一个 Hash128 和一个名为 crc 的 UINT默认值为 0。(Referenced decompiled 5.3.2p2 code,2017+ code is on the official Unity GitHub,but seems to differ from Unity 2015 code).
Unity 2017 代码指向 private extern static IntPtr CreateCached(DownloadHandlerAssetBundle obj,string url,string name,Hash128 hash,uint crc);
外部方法,该方法也未记录。
此外,当资产包被缓存以便引擎可以识别文件在缓存中并且不需要下载时,实际会发生什么?它只是简单地在缓存中搜索散列名称,还是做一些更复杂的事情?
霜冻
解决方法
我可以清楚地看到创建的资产包(放在服务器上稍后下载的资产包)和缓存的资产包(在运行时下载一次并存储到设备的资产包)之间的大小差异。在 Windows 上,您可以在 %appdata%/Local Low/Unity/company+name_of_app 找到它们。缓存版本通常压缩较少,因此应用程序可以更快地加载它们,而存储在服务器上的版本压缩程度更高,因此下载所需的带宽更少。内容应该相同,但使用不同的方法压缩。有关详情,请参阅 this docs page。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。