Unity使用【UnityWebRequest】API下载文件并且显示下载进度

背景:

  一个非常实用的小功能,平常项目中可能会有这个需求:Unity中下载文件,并将下载进度显示出来今天总结一下!我们在下载的时候考虑的东西有很多,比如用户下载到了一半断开的情况,网络异常的情况等等。


代码如下:
  这里下载服务器端的视频为例,测试在下载完成后, request.downloadProgress返回的值大约在0.996左右,小于1,所以在下载完成后,我们用代码控制将进度条的value值等于1。

	//进度条
 	private Slider my_Slider;
 	
    /// <summary>
    /// 下载
    /// </summary>
    /// <param name="url">下载的地址</param>
    /// <returns></returns>
    IEnumerator Download(string url)
    {
        UnityWebRequest request = UnityWebRequest.Get(url);
        request.SendWebRequest();
        if (request.isHttpError||request.isNetworkError)
        {
            print("当前的下载发生错误" + request.error);
            yield break;
        }
        while (!request.isDone)
        {
            print("当前的下载进度为:" + request.downloadProgress);
            my_Slider.value = request.downloadProgress;
            yield return 0;
        }
        if (request.isDone)
        {
            my_Slider.value = 1; 
            //将下载的文件写入
            using (FileStream fs=new FileStream(Application.streamingAssetsPath+"/Test.MP4",FileMode.Create))
            {
                byte[] data = request.downloadHandler.data;
                fs.Write(data, 0, data.Length);
            }
        }
    }

注意streamingAssets文件夹在PC端是可读可写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值