微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AssetBundle 缓存过程缓存 Unity 资产包时会发生什么? ab 的哪些属性使其与其缓存形式不同?

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?