由于WWW.progress在安卓上进度一直显示是0,所以只得自己动手写下载函数了。结合网上同行的代码,加上自己修改,总算完成了。

public class ItemScript : MonoBehaviour {        string prompt = "ss";void OnApplicationQuit(){       StopAllCoroutines();//关闭所有协程}void OnDestroy(){if(request != null){//以下步骤很重要,用户中止时,放弃请求,如果不放弃,连续多次请求,就会出现卡死。request.Abort();UnityEngine.Debug.Log("request.Abort();");}        }//输出进度信息void output (string strInfo) {GameObject TextRect = GameObject.Find("Canvas/Panel/ProgressBackGround/ProgressRect/ProgressText");if(TextRect != null){Text ProgressText = (Text)TextRect.GetComponent<Text>();ProgressText.text = UserHelp.AddColorAttr(strInfo);}}//点击按钮“开始下载”public void OnClickRescourceItem(){     string strTmpFile = "C:/tmp/downloading.srt";//临时文件if (System.IO.File.Exists(strTmpFile)){File.Delete(strTmpFile);}//打开进度显示面板GameObject bg = GameObject.Find("Canvas/Panel").transform.Find("ProgressBackGround").gameObject;bg.SetActive(true);//开始异步下载StartCoroutine(DownloadFunction("http://localhost/test.jpg", "C:/UnityDownload/test.jpg"));  }System.Net.HttpWebRequest request;IEnumerator DownloadFunction(string uri,string saveFile){//删除本地临时文件string strTmpFile = "C:/tmp/downloading.srt";if (System.IO.File.Exists(strTmpFile)){File.Delete(strTmpFile);}//打开网络连接 request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);request.Timeout = 5000;//获取临时文件大小,注意,不要再创建request,连续请求可能卡死,开启下次请求前请先结束上一次的请求。//重要的事说三遍:不要连续请求!不要连续请求!不要连续请求!long countLength = request.GetResponse().ContentLength;//打开上次下载的文件或新建文件 long lStartPos = 0;System.IO.FileStream fs;fs = new System.IO.FileStream(strTmpFile, System.IO.FileMode.Create);if (lStartPos > 0){request.AddRange((int)lStartPos); //设置Range值print(lStartPos);}//向服务器请求,获得服务器回应数据流 System.Net.WebResponse res =  request.GetResponse();System.IO.Stream ns = res.GetResponseStream();int len = 1024 * 8;byte[] nbytes = new byte[len];int nReadSize = 0;nReadSize = ns.Read(nbytes, 0, len);while (nReadSize > 0){fs.Write(nbytes, 0, nReadSize);nReadSize = ns.Read(nbytes, 0, len);double dDownloadedLength = fs.Length * 1.0 / (1024*1024);double dTotalLength = countLength * 1.0 / (1024*1024);prompt = string.Format("已下载 {0:F}M / {1:F}M", dDownloadedLength, dTotalLength);output(prompt);yield return false;}ns.Close();fs.Close();//下载完成重命名FileInfo fi = new FileInfo(strTmpFile);fi.MoveTo(saveFile);File.Delete(strTmpFile);//关闭进度面板GameObject bg = GameObject.Find("Canvas/Panel").transform.Find("ProgressBackGround").gameObject;bg.SetActive(false);}
}

Unity3d下载大型文件并显示进度相关推荐

  1. Android 下载文件并显示进度条

    2019独角兽企业重金招聘Python工程师标准>>> OK,上一篇文章讲了上传文件到服务端,并显示进度条 那么这边文章主要讲下载文件并显示进度条. 由于简单,所以只上传代码.还是需 ...

  2. android下载通知栏,Android开发中实现下载文件通知栏显示进度条

    android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...

  3. 实现在 .net 中使用 HttpClient 下载文件时显示进度

    在 .net framework 中,要实现下载文件并显示进度的话,最简单的做法是使用 WebClient 类.订阅 DownloadProgressChanged 事件就行了. 但是很可惜,WebC ...

  4. iOS中下载大型文件的原理解析二

    在iOS中下载大型文件,需要使用NSURLConnection 的代理方法: (void)touchesBegan:(NSSet)touches withEvent:(UIEvent *)event ...

  5. iOS下载大型文件原理解析三

    在下载大型文件过程中是可以取消下载的 - (IBAction)download:(UIButton *)sender { // 状态取反 sender.selected = !sender.isSel ...

  6. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  7. Unity下载文件并显示进度

    public class ItemScript : MonoBehaviour {//异步对象 private WWW downloadOperation; // Use this for initi ...

  8. java 下载文件 进度条_java – 从服务器下载文件时显示进度条

    如果我很了解你,你想显示一个进度条,直到你的服务器准备好发送一个文件,而不是显示蜜蜂下载的文件的进度. 如果是这样,你正在处理艰难的练习.一个可靠的进度条需要知道(相当准确)你在做什么以及需要多长时间 ...

  9. JavaWeb 使用ajax上传文件并显示进度条等上传信息

    文件上传在Web程序中是常用的功能,一般上传图片或者文件大小比较少的文件客户端不需要显示上传进度或文件上传的信息,如果是上传的文件比较大的时候,可以在客户端展示文件上传进度以及根据业务的需求显示文件上 ...

最新文章

  1. VC模仿超炫QQ界面的实现
  2. 案例:服务器输出字符数据到浏览器 || 乱码问题|| 案例:服务器输出字节数据到浏览器
  3. 一个人最重要的是跌倒了爬起来的能力
  4. [FY20 创新人才班 ASE] 第 1 次作业成绩
  5. letecode [204] - Count Primes
  6. 红米Note 7 Pro在印度首销迅速售罄
  7. 路由器升级须注意,升级导致功能失灵无法使用无线功能
  8. 【图文详解】,配置NLB群集
  9. [UVA-1218] Perfect Service(树的最小支配集)
  10. 03.学习笔记-Linux下根目录介绍
  11. Ubuntu13.04安装OpenCV2.4.5
  12. Python操作Redis例子
  13. 用K-Means和DBSCAN算法对西瓜数据集4.0进行聚类分析
  14. java进销存管理系统设计_java进销存管理系统的设计与实现-springboot源码
  15. 计算机cmd如何设置路由,小编教你怎么进入路由器设置界面
  16. 2021年全球排烟扇收入大约181百万美元,预计2028年达到198.7百万美元
  17. 【蓝桥杯】等差素数列
  18. WineBottler for Mac(Mac 运行 exe 程序工具)破解版安装
  19. LQBv23-Python:三升序列
  20. 论一个程序员的编程修养(你品,你细品)

热门文章

  1. 04_frp内网穿透实例
  2. HTML5斯诺克桌球俱乐部【译】
  3. 【C++】 Swan学院社团招新(PTA)
  4. GMT所提供的所有命令和其功能
  5. 大学计算机英语听力,计算机二级 -【听力改革】大学英语六级听力改革基础训练 TEST 5(附音频MP3) -我要模考网...
  6. setTimeout with a shorter delay
  7. 微金所张继业:规范化运作 回馈投资人
  8. 以前端的角度出发做好SEO需要考虑什么
  9. GeoHash代码实现--java
  10. K8S建立ipv6集群