如何在Unity3D中设置和使用asset bundle版本?
How to set and use asset bundle version in Unity3D?
如何让 WWW.LoadFromCacheOrDownload 函数下载最新版本的资产包,以便上述函数不使用缓存的资产包。
这个函数的第二个参数实际上是资产包的版本(WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);
)。因此,如果您想下载新的,请确保参数 version
的值更高。
通常你通过在线某处获取当前版本号来做到这一点,以便客户端在加载资产之前检查当前版本并将其作为参数传递。
就这么简单
但是在 Unity3D 中 5.x 我在使用 WWW.LoadFromCacheOrDownload
时遇到了很多问题,因为它总是在下载,即使资产应该被缓存。但也许它已经修复了。
我将提供更新的答案,因为 WWW 方法不再是推荐的方法。请参阅 UnityWebRequestAssetBundle class:https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequestAssetBundle.GetAssetBundle.html。 Unity 的缓存系统将使用版本号来处理——你只需要担心设置它。只要您提供新版本号,或者如果缓存中不存在包名称(新包),它将 re-download 资产包。如果您提供的版本号已经在缓存中,它将从缓存中加载。
注意 GetAssetBundle 方法的重载,它们如何采用 Hash128 或 uint 作为版本号。我发现 Hash128 选项具有误导性。它引导人们使用资产包的文件哈希值,该值由资产包清单方便地提供。 Unity 的文档中甚至有一个示例显示了这种用法。但正如此处第一个 post 中所述,Unity 指示该值是他们不推荐的不可靠估计:https://forum.unity.com/threads/reliability-of-asset-bundle-hashes-in-assetbundlemanifest.773141/
有谁知道版本号的推荐值来源应该是什么,请告诉我。
如何让 WWW.LoadFromCacheOrDownload 函数下载最新版本的资产包,以便上述函数不使用缓存的资产包。
这个函数的第二个参数实际上是资产包的版本(WWW LoadFromCacheOrDownload(string url, int version, uint crc = 0);
)。因此,如果您想下载新的,请确保参数 version
的值更高。
通常你通过在线某处获取当前版本号来做到这一点,以便客户端在加载资产之前检查当前版本并将其作为参数传递。
就这么简单
但是在 Unity3D 中 5.x 我在使用 WWW.LoadFromCacheOrDownload
时遇到了很多问题,因为它总是在下载,即使资产应该被缓存。但也许它已经修复了。
我将提供更新的答案,因为 WWW 方法不再是推荐的方法。请参阅 UnityWebRequestAssetBundle class:https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequestAssetBundle.GetAssetBundle.html。 Unity 的缓存系统将使用版本号来处理——你只需要担心设置它。只要您提供新版本号,或者如果缓存中不存在包名称(新包),它将 re-download 资产包。如果您提供的版本号已经在缓存中,它将从缓存中加载。
注意 GetAssetBundle 方法的重载,它们如何采用 Hash128 或 uint 作为版本号。我发现 Hash128 选项具有误导性。它引导人们使用资产包的文件哈希值,该值由资产包清单方便地提供。 Unity 的文档中甚至有一个示例显示了这种用法。但正如此处第一个 post 中所述,Unity 指示该值是他们不推荐的不可靠估计:https://forum.unity.com/threads/reliability-of-asset-bundle-hashes-in-assetbundlemanifest.773141/
有谁知道版本号的推荐值来源应该是什么,请告诉我。