[已解决]Unable to move cache folde to erro cde -9

异常:
Unable to move cache folder ‘C:/Users/xxxx/AppData/LocalLow/Unity/WebPlayer/Cache/Temp/06146bcebf163c745b0d1470f3fa175b’ to ‘C:/Users/cmdsz/AppData/LocalLow/Unity/WebPlayer/Cache/xxxx/e2ff6a1826aff99c13b7f786274d3c41ba1b2510’: error code - 9

截图:

exc

很多人说用Caching.ready 来判断,其实不然 例如

这个问题是由于已经出现一个AssetBundle被UnityWebRequest多次加载,前一个加载完成之后展开至缓存目录,同时在目录下建立一个名为 “__lock” 的空文件夹,作为文件锁,在AssetBundle.Unload()之前,这把锁一直存在,想调用Unity底层的缓存函数时,就会出现以上异常。
缓存封装了四个步骤
1:如果对应hash128 或者versionID的 AssetBundle已经被缓存,则从缓存中直接加载
2:如果没有缓存,则从指定URL下载并展开至缓存目录的一个临时目录
3:从临时目录拷贝至缓存目录(可以在运行时读取这个变量UnityEngine.Application.temporaryCachePath)
4:为展开的AssetBundle上锁(程序退出或者AssetBundle被卸载后,锁被解开)

如果你的代码是同时请求加载多个AssetBundle并且加载他们的依赖,然后再统一等待所有加载完成,那你就要注意,在调用用UnityWebRequest.GetAssetBundle(bundleUrl,BundleHash128,version) 之前,判断是否已经启动一个异步的加载,我的代码如下,完美解决
mycode

搞定

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值