
我們現在的邏輯流程是網上下載ab資源,異步或者同步寫入本地,然后第一次下載的時候使用AssetBundle.LoadFromMemoryAsync(bytes),第二次使用的本地的LoadFromFileAsync來加載AB包,不管同步寫本地還是異步寫本地都會出錯,vivo x9很容易就崩潰,現在用的是UnityWebReq,感覺從CDN上下載資源的二進制資料有問題,寫入本地之后,再以AssetBundle LoadFromFile讀取出來的AB資源會報錯(上面有報錯日志)具體問題我們確實不清楚,希望大佬給予解答,感激不盡
uj5u.com熱心網友回復:
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);
}
uj5u.com熱心網友回復:
你這個是把ab包保存到本地以后再加載資源吧?我以前用WWW.LoadFromCacheOrDownload加載資源也報過這個錯誤,情況是同一幀里面觸發了加載同一個檔案的方法,后來直接用WWW加載就好了。看報錯我估計是從本地快取檔案加載時有解壓的程序,這里另外一個請求過來解壓程序就出現了IO沖突。
現在WWW棄用了,我正打算用你的方法,實作LoadFromCacheOrDownload類似的功能,然后用LoadFromFileAsync來加載,看你的問題,我只能放棄異步加載了。
我試一下用loadfromfile同步加載看會不會報錯。
也許樓上老哥的方法是正解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/32327.html
標籤:Unity3D
上一篇:Unity問題
