【问题标题】:Does UnityWebRequestAssetBundle use caching automatically?UnityWebRequestAssetBundle 是否自动使用缓存?
【发布时间】:2020-05-31 19:35:39
【问题描述】:

我使用以下代码从服务器下载我的资产包。

  1. 如果我在重新启动我的应用程序后再次运行此代码,它是否会重新下载捆绑包,因为它在缓存中?以及我如何知道它是否正在重新下载/未下载
  2. 我阅读了有关哈希和版本号的信息 - 您将如何更改此代码以验证哈希和版本号
  3. 我需要保留清单文件吗?在构建资产包时,我得到 2 个文件,一个是资产,另一个是清单。我只将资产(大文件)上传到我的服务器并忽略清单,这很好,但在这种情况下是否意味着我不能使用缓存?我只上传一个文件的原因是因为 UnityWebRequestAssetBundle 下载了一个文件。

构建资产包-

static void BuildABs()
{
BuildPipeline.BuildAssetBundles("Assets/abs", BuildAssetBundleOptions.ChunkBasedCompression, 
BuildTarget.iOS);
}

加载资源包

using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle(url))
{
yield return uwr.SendWebRequest();

if (uwr.isNetworkError || uwr.isHttpError)
{
Debug.Log(uwr.error);
}
else
{
// Get downloaded asset bundle
myLoadedAssetBundle = DownloadHandlerAssetBundle.GetContent(uwr);
}

【问题讨论】:

  • 请将您的问题一次限制在 一个。目前你的问题是广泛的。一般来说:如果您启动UnityWebRequest,它将再次下载任何内容.. 这是一个 HTTP 请求,没有关于它将下载什么的信息。如果您想使用缓存而不是将文件本地存储在设备上并在下载之前检查它是否已经存在..

标签: unity3d caching assetbundle unitywebrequest


【解决方案1】:
  1. 为了使用 UnityWebRequest 强制兑现,您需要将哈希码或 CRC 与 URI 一起作为参数传递给 UnityWebRequest,该参数可以在您构建资产包的平台的资产包清单中找到,按照 Manual Page you很好地找到代码 sn-ps 这样做。
  2. 看到这个answer
  3. 阅读 1 处的手册页,了解手册的工作原理以及您需要的手册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 2013-08-08
    • 2012-07-27
    • 1970-01-01
    • 2021-02-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多