如何让 WWW.LoadFromCacheOrDownload 函数下载最新版本的资源包,使上述功能不使用缓存的资源包。
2 回答
该函数的第二个参数实际上是资产包的版本(WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);
)。因此,如果您想下载新的,请确保该参数version
获得更高的数字作为其值。
通常,您通过在线某处获取当前版本号来做到这一点,以便客户端在加载资产之前检查当前版本并将其作为参数传递。
就是这么简单。
但是在 Unity3D 5.x 中我遇到了很多问题WWW.LoadFromCacheOrDownload
,因为即使资产应该被缓存,它也总是在下载。但也许它已经被修复了。
由于不再推荐使用 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/
如果有人知道版本号的推荐值来源应该是什么,请告诉我。