unity3d 关于断点下载和整个下载(用于更新)

转自:http://blog.csdn.net/yutyliu/article/details/24346459

string t = "";

//整体下载

IEnumerator downfile(string url, string LocalPath,UILabel DesLable)
    {
        Uri u = new Uri(url);
        HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u);
        mRequest.Method = "GET";
        mRequest.ContentType = "application/x-www-form-urlencoded";
        
        HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse();
        
        Stream sIn = wr.GetResponseStream();
        FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write);
        
        long length = wr.ContentLength;
        long i = 0;
        decimal j = 0;
        
        while (i < length)
        {
            byte[] buffer = new byte[1024];
            i += sIn.Read(buffer, 0, buffer.Length);
            fs.Write(buffer, 0, buffer.Length);
            
            if ((i % 1024) == 0)
            {
                j = Math.Round(Convert.ToDecimal((Convert.ToDouble(i) / Convert.ToDouble(length)) * 100), 4);
                t= "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节 下载进度" + j.ToString() + "%";
                DesLable.text=t.ToString();
            }
            else
            {
                t = "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节";
                DesLable.text=t.ToString();
            }

yield return false;
            
            
        }
        
        sIn.Close();
        wr.Close();
        fs.Close();

}

string downloadString="已经下载";

//断点下载
    IEnumerator FPointDown(string uri,string saveFile,UILabel DesLable,UISprite LoadSprite)
    {
        //打开网络连接 
        System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
        System.Net.HttpWebRequest requestGetCount = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);
        long countLength = requestGetCount.GetResponse().ContentLength;
        
        //打开上次下载的文件或新建文件 
        long lStartPos = 0;
        System.IO.FileStream fs;
        if (System.IO.File.Exists(saveFile))
        {
            fs = System.IO.File.OpenWrite(saveFile);
            lStartPos = fs.Length;
            if (countLength - lStartPos <= 0)
            {
                fs.Close();
                t = "已经";
                DesLable.text=t.ToString();
                yield break;
            }
            fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针 
        }
        else
        {
            fs = new System.IO.FileStream(saveFile, System.IO.FileMode.Create);
        }
        
        
        if (lStartPos > 0)
        {
            request.AddRange((int)lStartPos); //设置Range值
            print(lStartPos);
        }
        
        //向服务器请求,获得服务器回应数据流 
        System.IO.Stream ns = request.GetResponse().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);
            t = downloadString+" : " + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"+"  ----  "+((double)fs.Length/countLength).ToString()+"%";
           
            
            yield return false;
        }
        ns.Close();
        fs.Close();
      //这里放更新安装代码,或者可以测试这个下载的包有没有出错,验证sha和md5

时间: 2024-10-24 02:44:56

unity3d 关于断点下载和整个下载(用于更新)的相关文章

2Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载

转载自风宇冲Unity3D教程学院 http://blog.sina.com.cn/s/blog_471132920101crh3.html 引言:想用Unity3D制作优秀的游戏,插件是必不可少的.工欲善其事必先利其器.本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择适当的工具.为此我写了插件的经验及理论讲解,涉及插件的 学习/辨别/选择/配合.也写了插件的 评测/教程/下载.关于评测,带有一定的主观性,仅供参考.关于教程,热门插件网上已经有很多教程了,本文提供链接,网上资料少的插

[原]unity3d之http多线程异步资源下载

郑重声明:转载请注明出处 U_探索 本文诞生于乐元素面试过程,被面试官问到AssetBundle多线程异步下载时,愣了半天,同样也被深深的鄙视一回(做了3年多u3d 这个都没用过),所以发誓要实现出来填补一下自己的空白,同时分享给大家.说明:本人只在pc和Android下测试好使,其他平台未知! 直接贴代码,都是C# http的API,不懂得自己百科. using UnityEngine; using System.Collections; using System; using System.

【Unity3D游戏开发】—— 导入网上下载的.unitypackage包

这两天遇到了这样一个问题,网上下载的别人导出的.unitypackage包.如果双击打开,则会出现"Failed importing package "的错误. 为此很头疼,查了一些资料,需要将.unitypackage包复制到Editor\Standard Packages文件夹下, 然后ctrl+9打开 Asset Store, 点击下载然后找到刚刚复制的包名,点击Import导入即可. 还有一种方法类似,将.unitypackage包复制到Editor\Standard Pack

33、多线程断点下载的实现&amp;界面的更新

1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 and

详解Mobile Atlas Creator1.9.16离线地图下载神器之下载自定义图源

Mobile Atlas Creator1.9.16离线地图下载神器之下载自定义图源 本文详细的介绍了如何使用Mobile Atlas Creator来下载自定义图源,Mobile Atlas Creator是用于下载图源的工具,本文测试的是高德地图,其他地图也差不多类似. 1.关于Mobile Atlas Creator的介绍 Mobile Atlas Creator是用于下载图源的工具,此工具免费,相信大家也找过不少相关的软件,但是大多数都是收费的.很多制作手机离线地图的朋友也会用到此工具来

ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:https://github.com/niexiaobo/ 实现功能 :播放视频 ,视频后台下载 (真机调试功能正常) 1.使用ZFPlayer播放视频(可以在线和本地播放,基于AVPlayer,调节音量和屏幕亮度) 2.使用 WHCNetWorkKit 实现下载,后台下载(多任务同时下载,单任务下载,

《Spark高级数据分析》pdf格式下载免费电子书下载

<Spark高级数据分析>pdf格式下载免费电子书下载https://u253469.ctfile.com/fs/253469-300325651 更多电子书下载: http://hadoopall.com/book 内容简介 本书是使用Spark进行大规模数据分析的实战宝典,由著名大数据公司Cloudera的数据科学家撰写.四位作者首先结合数据科学和大数据分析的广阔背景讲解了Spark,然后介绍了用Spark和Scala进行数据处理的基础知识,接着讨论了如何将Spark用于机器学习,同时介绍

《实用Common Lisp编程》pdf格式下载电子书免费下载

<实用Common Lisp编程>pdf格式下载电子书免费下载 https://u253469.ctfile.com/fs/253469-302448499 内容简介 由塞贝尔编著的<实用Common Lisp编程>是一本不同寻常的Common Lisp入门书.<实用Common Lisp编程>首先从作者的学习经过及语言历史出发,随后用21个章节讲述了各种基础知识,主要包括:REPL及Common Lisp的各种实现.S-表达式.函数与变量.标准宏与自定义宏.数字与字符

(转)Maven依赖的jar包下载不了、jar更新不了的解决办法

场景一: 使用Maven的同学可能偶尔会遇到这种情况:pom.xml中依赖了项目需要的某个jar文件,但是使用Maven –> update project 还是没办法下载该jar到项目中,你可能需要检查本地仓库的配置,打开.m2目录下的settings.xml,配置一个中央仓库(或者你使用的jar所在的仓库地址)的镜像: <mirror> <id>mvnrepositoryMID</id> <mirrorOf>mvnrepositoryRID<

百度云盘免下载百度云盘全速下载方法

使用百度云盘的时候,总是会遇到需要下载百度云盘才能下载里面的大内容文件.但是该怎么去除这个限制呢?网上一大堆方法都已经无法使用了.但是现在还真有一个方法可以使用,那就是在地址栏中复制云盘的文件地址,然后找个地方粘贴到地址栏里,在http后面加以个s,即https://..... 然后就可以使用了. 然后下载就可以不用下载百度云盘了.哈哈.有了地址就可以用IDM下载了.也可以迅雷下载!