问题
- 无法下载新的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