0

如何让 WWW.LoadFromCacheOrDownload 函数下载最新版本的资源包,使上述功能不使用缓存的资源包。

4

2 回答 2

0

该函数的第二个参数实际上是资产包的版本(WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);)。因此,如果您想下载新的,请确保该参数version获得更高的数字作为其值。

通常,您通过在线某处获取当前版本号来做到这一点,以便客户端在加载资产之前检查当前版本并将其作为参数传递。

就是这么简单。

但是在 Unity3D 5.x 中我遇到了很多问题WWW.LoadFromCacheOrDownload,因为即使资产应该被缓存,它也总是在下载。但也许它已经被修复了。

于 2016-05-30T08:12:28.987 回答
0

由于不再推荐使用 WWW 方法,因此我将提供更新的答案。请参阅 UnityWebRequestAssetBundle 类:https ://docs.unity3d.com/ScriptReference/Networking.UnityWebRequestAssetBundle.GetAssetBundle.html 。Unity 的缓存系统将使用版本号进行处理——您只需要担心设置它。每当您提供新版本号或缓存中不存在捆绑名称(新捆绑)时,它都会重新下载资产捆绑。如果您提供的版本号已经在缓存中,它将从缓存中加载。

请注意 GetAssetBundle 方法的重载,它们如何使用 Hash128 或 uint 作为版本号。我发现 Hash128 选项具有误导性。它导致使用资产包的文件哈希值,该值由资产包清单方便地提供。Unity 的文档中甚至有一个示例显示了这种用法。但正如此处第一篇文章所述,Unity 指示此值是不可靠的估计值,他们不建议这样做:https://forum.unity.com/threads/reliability-of-asset-bundle-hashes-in-assetbundlemanifest。 773141/

如果有人知道版本号的推荐值来源应该是什么,请告诉我。

于 2020-10-05T22:01:04.310 回答