日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity下载文件三(http异步下载)

發(fā)布時間:2025/4/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity下载文件三(http异步下载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

異步下載,顧名思義就是不影響你主線程使用客戶端的時候,人家在后臺搞你的明堂。

直接入主題,既然要下載,首先得請求,請求成功之后進行回調(diào),這就是一個異步過程,異步回調(diào)的時間不可控。

1、首先請求下載。

public bool DownLoadFile(DownLoadFileModel file){try{HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.1:8080/" + file.FileName);
       //DownLoadFileModel 為我自己定義的一個實體類,文件名需要帶后綴名
file.request = request;//實體類中將http的請求信息也帶進去了,方便回調(diào)中的判斷
request.BeginGetResponse(new AsyncCallback(ResponseCallbackDownLoad), file);//ResponseCallbackDownLoad請求成功后的回調(diào)方法return true;}catch {return false;}}

  2、請求成功之后就會去調(diào)用ResponseCallbackDownLoad方法,這個方法是異步的,是在子線程里執(zhí)行,如果在消息者模式下在這個回調(diào)里面發(fā)送監(jiān)聽到主線程,再操作GameObject對象就會報錯,或者直接調(diào)用主線程的GameObject也會報錯,至于怎么去獲取這個下載的信息并操作界面,我想這個我想我就不用多說了。不多說了,上回調(diào)代碼,回調(diào)代碼是在子線程里執(zhí)行。

private void ResponseCallbackDownLoad(IAsyncResult ar){//throw new NotImplementedException();try{object req = ar.AsyncState as object;;if (req == null) return;DownLoadFileModel file = ar.AsyncState as DownLoadFileModel;//獲取異步下載的請求的相關(guān)信息,以便判斷HttpWebResponse response = file.request.EndGetResponse(ar) as HttpWebResponse;if (response.StatusCode != HttpStatusCode.OK){response.Close();return;}Stream outStream;Stream inStream = response.GetResponseStream();byte[] b = new byte[1024];FileInfo fi = new FileInfo(Application.persistentDataPath+ "//" + file.SaveName);if (fi.Exists){//TODO如果文件件存在,TODO }else //else如果該文件不存在{try{int readCount = inStream.Read(b, 0, b.Length);outStream = fi.Create();long fileLength = response.ContentLength;//獲取文件總長度long fileSize = 0;//已下載的文件長度while (readCount > 0){outStream.Write(b, 0, readCount);fileSize += readCount;int progress = (int)(((float)fileSize / (float)fileLength) * 100);//progress 為計算下載的百分比readCount = inStream.Read(b, 0, b.Length);}outStream.Close();inStream.Close();response.Close();}}catch (Exception ex){}}}catch (Exception ex){Debug.Log("文件下載失敗" + ex.Message);}} }

  

?

轉(zhuǎn)載于:https://www.cnblogs.com/vsirWaiter/p/5377788.html

總結(jié)

以上是生活随笔為你收集整理的unity下载文件三(http异步下载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。