Unity3D AssetBundle缓存如何工作?

Unity3D AssetBundle缓存如何工作?,unity3d,Unity3d,我有点困惑: 在第一次下载assetbundle后,Unity如何知道我已经下载了它并在第二次直接从缓存(磁盘)加载 它是否使用url映射到本地存储?如果在这种情况下,如果我在服务器上使用相同的名称第二次更新assetbundle,它仍将从缓存加载,因为url没有更改 示例代码: UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 0

我有点困惑:

在第一次下载assetbundle后,Unity如何知道我已经下载了它并在第二次直接从缓存(磁盘)加载

它是否使用url映射到本地存储?如果在这种情况下,如果我在服务器上使用相同的名称第二次更新assetbundle,它仍将从缓存加载,因为url没有更改

示例代码:

UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 0);
yield return request.Send();
//only download at the first time, at the second time, it can be loaded from cache
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(request);
GameObject cube = bundle.LoadAsset<GameObject>("Cube");
UnityEngine.Networking.UnityWebRequest请求=UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri,0);
生成返回请求。Send();
//只有第一次下载,第二次才能从缓存加载
AssetBundle bundle=DownloadHandlerAssetBundle.GetContent(请求);
GameObject多维数据集=bundle.LoadAsset(“多维数据集”);
具有缓存

而不是打电话:

UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 0);
您必须使用版本号调用GetAssetBundle:

UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 1, 0);
请参阅此处的文档:

您还可以通过调用
newdownloadHandlerAssetBundle(字符串url、uint版本、uint crc)来实现这一点。请参见此处的示例代码:
和文件在此:

请注意,使用缓存时,从缓存检索数据时,
请求.responseCode
将不再是值
200
(成功),而是0

有缓存

而不是打电话:

UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 0);
您必须使用版本号调用GetAssetBundle:

UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.GetAssetBundle(uri, 1, 0);
请参阅此处的文档:

您还可以通过调用
newdownloadHandlerAssetBundle(字符串url、uint版本、uint crc)来实现这一点。请参见此处的示例代码:
和文件在此:

请注意,使用缓存时,从缓存检索数据时,
请求.responseCode
将不再是值
200
(成功),而是0