【问题标题】:unity3d Caching.CleanCache won't workunity3d Caching.CleanCache 不起作用
【发布时间】:2017-11-13 11:29:30
【问题描述】:

我在我的游戏中使用 AssetBundle,并希望让用户在设置页面中清除 AssetBundle 缓存。 我尝试使用 Caching.CleanCache 但它返回“false”,因为我在设置页面中使用 AssetBundle 缓存。我尝试加载一个空场景并清除缓存,但它也不起作用。 我需要重新启动应用程序吗?有人知道任何解决方案吗?

【问题讨论】:

  • 您可以使用 Caching.expirationDelay 设置 AssetBundle 在自动删除之前在缓存中保持未使用的秒数。
  • 返回false,并不一定意味着它不起作用。如果 Caching.Clean 返回下降,则缓存可能已被清除或未使用。
  • @Tobias Theel Ive tried but Caching.Clean return false doesnt 对缓存文件夹进行更改,caching.spaceOccupied 显示大量字节,但在删除缓存文件时返回 true,caching.spaceOccupied 返回 0。
  • 我发现我有一些卸载的资产包。所以我能够在调用 Caching.CleanCache 之前卸载所有资产包后清除缓存。谢谢

标签: c# unity3d assetbundle


【解决方案1】:

让我回答我的问题。 经过一番研究,我发现我的游戏有一些卸载的资产包。 卸载所有资产包后,我能够删除缓存。

【讨论】:

    【解决方案2】:

    对我来说,调用以下代码是不够的:

    AssetBundle.UnloadAllAssetBundles(false);
    bool success = Caching.ClearCache();
    

    我在缓存中有一个资产包,它没有通过 UnloadAllAssetBundles 卸载。这种情况发生在我之前提出 2 个即时请求的捆绑包中。第二次,捆绑下载失败。缓存处于不一致的状态,然后无法卸载。 所以在我解决了 2 个请求的问题后,上面的代码就可以正常工作了。

    同一资产包的 2 个请求问题已通过使第二个请求等待第一个请求完成来解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多