欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/4/14 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 unity下载文件三(http异步下载) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

异步下载,顾名思义就是不影响你主线程使用客户端的时候,人家在后台搞你的明堂。

直接入主题,既然要下载,首先得请求,请求成功之后进行回调,这就是一个异步过程,异步回调的时间不可控。

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的请求信息也带进去了,方便回调中的判断
request.BeginGetResponse(new AsyncCallback(ResponseCallbackDownLoad), file);//ResponseCallbackDownLoad请求成功后的回调方法return true;}catch {return false;}}

  2、请求成功之后就会去调用ResponseCallbackDownLoad方法,这个方法是异步的,是在子线程里执行,如果在消息者模式下在这个回调里面发送监听到主线程,再操作GameObject对象就会报错,或者直接调用主线程的GameObject也会报错,至于怎么去获取这个下载的信息并操作界面,我想这个我想我就不用多说了。不多说了,上回调代码,回调代码是在子线程里执行。

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;//获取异步下载的请求的相关信息,以便判断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);}} }

  

 

转载于:https://www.cnblogs.com/vsirWaiter/p/5377788.html

总结

以上是生活随笔为你收集整理的unity下载文件三(http异步下载)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。