UnityWebRequest是自带的下载资源的api,优点显而易见:封装好,简单用,兼容性跨平台非常好。缺点也显而易见:可拓展性差

下载小文件通常使用下面的方法:

   public IEnumerator DownloadFile(string url, string contentName){string downloadFileName = "";
#if UNITY_EDITORdownloadFileName = Path.Combine(Application.dataPath, contentName);
#elif UNITY_ANDROIDdownloadFileName = Path.Combine(Application.persistentDataPath, contentName);
#endifusing (UnityWebRequest webRequest = UnityWebRequest.Get(url)){yield return webRequest.SendWebRequest();if (webRequest.isNetworkError){Debug.LogError(webRequest.error);}else{DownloadHandler fileHandler = webRequest.downloadHandler;using (MemoryStream memory = new MemoryStream(fileHandler.data)){byte[] buffer = new byte[1024 * 1024];FileStream file = File.Open(downloadFileName, FileMode.OpenOrCreate);int readBytes;while ((readBytes = memory.Read(buffer, 0, buffer.Length)) > 0){file.Write(buffer, 0, readBytes);}file.Close();}}}}

这样的下载方式下载小文件时基本没有任何问题,但如果是大文件特别是移动端下载的时候就有可能直接崩溃了。

解决办法:使用DownloadHandlerFile函数,可以直接将文件下载到外存,即可解决下载大文件崩溃的问题

 public IEnumerator DownloadVideoFile01(Uri uri, string downloadFileName, Slider sliderProgress ){using (UnityWebRequest downloader = UnityWebRequest.Get(uri)){downloader.downloadHandler = new DownloadHandlerFile(downloadFileName);//直接将文件下载到外存print("开始下载");downloader.SendWebRequest();print("同步进度条");while (!downloader.isDone){//print(downloader.downloadProgress);sliderProgress.value = downloader.downloadProgress;sliderProgress.GetComponentInChildren<Text>().text = (downloader.downloadProgress* 100).ToString("F2") + "%";yield return null;}if (downloader.error != null){Debug.LogError(downloader.error);}else{print("下载结束");sliderProgress.value = 1f;sliderProgress.GetComponentInChildren<Text>().text = 100.ToString("F2") + "%";}}}

Unity 使用UnityWebRequest问题小结相关推荐

  1. Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享

    Unity 最新UnityWebRequest下载网络资源,支持断点续传.多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https://do ...

  2. Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互

    目录 在unity2021中,WWW的资源加载方式过时了,新的方法为UnityWebRequest BestHttp的Get方式和Post方式 部分API 在unity2021中,WWW的资源加载方式 ...

  3. Unity使用UnityWebRequest实现本地日志上传到web服务器

    一.前言 Unity项目开发中,遇到bug的时候,我们一般是通过日志来定位问题,所以写日志到本地文件,或者把日志文件上传到web服务器这样的功能就很必要了.下面就介绍下如何实现日志写入本地文件和上传本 ...

  4. Unity通过UnityWebRequest进行Http链接

    文章目录 前言 一.Get和Post请求 二.设置头文件的Get请求和Post请求 三.数据转换 总结 前言 最近需要用Unity做一款链接HTTP服务器的游戏,因此对自己所做的东西进行记录,方便自己 ...

  5. Unity Draw call batching小结

    文章目录 DrawCalls 和 Batches draw call就是你知道的那个draw call draw call不一定意味着状态切换 静态batching 静态batching更费内存 静态 ...

  6. Unity使用UnityWebRequest请求服务器json数据,webgl端服务器请求

    根据unity官方说的, WebGL 网络无法直接访问套接字 由于存在安全隐患,JavaScript 代码无法直接访问 IP 套接字来实现网络连接.因此,.NET 网络类(即 System.Net 命 ...

  7. unity渲染层级关系小结

    http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...

  8. unity 使用UnityWebRequest读取Json文件

    一.Json模板类 [Serializable] public class Settings {[SerializeField]public int Sleep;//等其他属性 } 二.读取 usin ...

  9. Unity灯光、烘焙小结(一)Unity灯光烘焙教程

    *****************Unity灯光烘焙教程************* https://space.bilibili.com/26063436/channel/detail?cid=867 ...

最新文章

  1. 重写toString()
  2. 剑指Offer #03 从尾到头打印链表(递归)
  3. 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))
  4. python基本统计量_Python中简单统计量的计算
  5. macbook 移动硬盘无法写入_如何升级MacBook笔记本的SSD硬盘-菜鸟折腾系列一
  6. tinkphp1.0贺岁版小程序应用平台系统源码
  7. PHP MySQL 相关函数(上)
  8. Django数据获取操作
  9. Python打包成exe,pyc
  10. Docker系列(二)Docker安装与启动
  11. vue中的v-if和v-show的区别
  12. 安卓虚拟键盘_微软双屏Surface Duo上的安卓应用体验:可瞬间变身笔记本电脑
  13. html实现自动图片轮播,图片轮播的实现(html__js)
  14. C语言例题5: 三角形周长面积
  15. ue4 输出360度全景深度图
  16. 领导者必备的13个管理套路,用好了,下属死心塌地为你卖命
  17. c++如何保留两位小数
  18. 如何快速提高博客排名?CSDN排名如何突破
  19. 西门子1500与SMC EX260总线阀岛通讯组态
  20. C#编写网游客户端连接游戏服务器

热门文章

  1. 《互联网+流通——F2R助力传统产业创新与转型》一一1.1 “互联网+”的本质、演进与发展趋势...
  2. 【UnityShader自学日志】星球大气效果
  3. Texlive配置华文新魏字体
  4. android相册管理系统下载安装,云象相册管理
  5. 数据如何变成知识(3):提取暗数据
  6. Is it going on-------------Docker容器的安装以及基本的操作指令
  7. 剩余空间,自由再生——城市高架桥下空间的活化再生研究
  8. sql server 计算坐标点距离函数
  9. mysql命令去重_mysql去重
  10. 火锅赛道内卷:七欣天VS捞王,谁是 “港股火锅第三股”?