关注

如何从缓存中删除AssetBundle?

问题

  • 无法下载新的AssetBundle。
  • 我想删除或者更新旧版AssetBundle。

原因

可能设备的存储空间已耗尽(这个问题已经在5.3.4p2版本中修复,如果没有可用空间旧版的AssetBundle会先删除)。或者可能下载的AssetBundle出现了问题。

解决方案

方案一:

  • 使用CleanCache()删除当前应用程序缓存的所有AssetBundle。
  • Caching.CleanCache()返回一个bool值得到它是否能够完成操作:

public static void CleanCache ()
{
   if (Caching.CleanCache ()) 
   {
      Debug.Log("Successfully cleaned the cache.");
   }
   else 
   {
      Debug.Log("Cache is being used.");
   }

方案二:

  • 使用expirationDelay设置AssetBundle在缓存中超过保持未使用的(单位为秒)时间后自动删除。 下载软件包时,会为该软件包存储时间戳。
  • 设置expirationDelay属性,需要在缓存文件夹中为应用程序创建一个入口。 该设置存储在应用程序的根缓存文件夹的文件中。 如果应用程序的文件夹不存在,则无法写入文件。 要使该入口存在,你需要首先请求一个包。 因此,为了设置expirationDelay,首先请求至少一个包,它将为您的应用程序包创建文件夹。 你可以使用任何包来确保文件夹存在,然后再调用该属性。

这两种解决方案可以单独使用,也可以同时使用。 

更多信息

请访问:

http://docs.unity3d.com/ScriptReference/Caching.html

http://docs.unity3d.com/ScriptReference/Caching.CleanCache.html

http://docs.unity3d.com/ScriptReference/Caching-expirationDelay.html

 

 

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。