【Unity问题】AssetBundle资源加载报错问题

small小鑫 2019-06-20 06:14:59

我们现在的逻辑流程是网上下载ab资源,异步或者同步写入本地,然后第一次下载的时候使用AssetBundle.LoadFromMemoryAsync(bytes),第二次使用的本地的LoadFromFileAsync来加载AB包,不管同步写本地还是异步写本地都会出错,vivo x9很容易就崩溃,现在用的是UnityWebReq,感觉从CDN上下载资源的二进制数据有问题,写入本地之后,再以AssetBundle LoadFromFile读取出来的AB资源会报错(上面有报错日志)具体问题我们确实不清楚,希望大佬给予解答,感激不尽
...全文
938 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
newmunga 2019-08-13
  • 打赏
  • 举报
回复
你这个是把ab包保存到本地以后再加载资源吧?
我以前用WWW.LoadFromCacheOrDownload加载资源也报过这个错误,情况是同一帧里面触发了加载同一个文件的方法,后来直接用WWW加载就好了。看报错我估计是从本地缓存文件加载时有解压的过程,这里另外一个请求过来解压过程就出现了IO冲突。
现在WWW弃用了,我正打算用你的方法,实现LoadFromCacheOrDownload类似的功能,然后用LoadFromFileAsync来加载,看你的问题,我只能放弃异步加载了。
我试一下用loadfromfile同步加载看会不会报错。
也许楼上老哥的方法是正解
夫人的泡泡鱼 2019-06-20
  • 打赏
  • 举报
回复
UnityWebRequest加载AB包,参考API的说明,确定下载AB正确。
private IEnumerator Load()
{
string url = "";//此为AssetBundle资源路径,可为本地,也可以是服务端
UnityWebRequest request= UnityWebRequest.GetAssetBundle(url);
yield return request.send();
AssetBundle ab = DownloadHandlerAssetBundle.GetContent (request );

GameObject ao = ab.LoadAsset<GameObject>("Man1");
Instantiate(ao);
}

2,543

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧