Unity 使用UnityWebRequest问题小结
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问题小结相关推荐
- Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享
Unity 最新UnityWebRequest下载网络资源,支持断点续传.多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https://do ...
- Unity用UnityWebRequest和 BestHttp的GET和POST表单提交,与php交互
目录 在unity2021中,WWW的资源加载方式过时了,新的方法为UnityWebRequest BestHttp的Get方式和Post方式 部分API 在unity2021中,WWW的资源加载方式 ...
- Unity使用UnityWebRequest实现本地日志上传到web服务器
一.前言 Unity项目开发中,遇到bug的时候,我们一般是通过日志来定位问题,所以写日志到本地文件,或者把日志文件上传到web服务器这样的功能就很必要了.下面就介绍下如何实现日志写入本地文件和上传本 ...
- Unity通过UnityWebRequest进行Http链接
文章目录 前言 一.Get和Post请求 二.设置头文件的Get请求和Post请求 三.数据转换 总结 前言 最近需要用Unity做一款链接HTTP服务器的游戏,因此对自己所做的东西进行记录,方便自己 ...
- Unity Draw call batching小结
文章目录 DrawCalls 和 Batches draw call就是你知道的那个draw call draw call不一定意味着状态切换 静态batching 静态batching更费内存 静态 ...
- Unity使用UnityWebRequest请求服务器json数据,webgl端服务器请求
根据unity官方说的, WebGL 网络无法直接访问套接字 由于存在安全隐患,JavaScript 代码无法直接访问 IP 套接字来实现网络连接.因此,.NET 网络类(即 System.Net 命 ...
- unity渲染层级关系小结
http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...
- unity 使用UnityWebRequest读取Json文件
一.Json模板类 [Serializable] public class Settings {[SerializeField]public int Sleep;//等其他属性 } 二.读取 usin ...
- Unity灯光、烘焙小结(一)Unity灯光烘焙教程
*****************Unity灯光烘焙教程************* https://space.bilibili.com/26063436/channel/detail?cid=867 ...
最新文章
- 重写toString()
- 剑指Offer #03 从尾到头打印链表(递归)
- 操作篇 了解学习NAT实验(关于静态NAT、动态NAT、EasyIP、端口映射的配置方法))
- python基本统计量_Python中简单统计量的计算
- macbook 移动硬盘无法写入_如何升级MacBook笔记本的SSD硬盘-菜鸟折腾系列一
- tinkphp1.0贺岁版小程序应用平台系统源码
- PHP MySQL 相关函数(上)
- Django数据获取操作
- Python打包成exe,pyc
- Docker系列(二)Docker安装与启动
- vue中的v-if和v-show的区别
- 安卓虚拟键盘_微软双屏Surface Duo上的安卓应用体验:可瞬间变身笔记本电脑
- html实现自动图片轮播,图片轮播的实现(html__js)
- C语言例题5: 三角形周长面积
- ue4 输出360度全景深度图
- 领导者必备的13个管理套路,用好了,下属死心塌地为你卖命
- c++如何保留两位小数
- 如何快速提高博客排名?CSDN排名如何突破
- 西门子1500与SMC EX260总线阀岛通讯组态
- C#编写网游客户端连接游戏服务器
热门文章
- 《互联网+流通——F2R助力传统产业创新与转型》一一1.1 “互联网+”的本质、演进与发展趋势...
- 【UnityShader自学日志】星球大气效果
- Texlive配置华文新魏字体
- android相册管理系统下载安装,云象相册管理
- 数据如何变成知识(3):提取暗数据
- Is it going on-------------Docker容器的安装以及基本的操作指令
- 剩余空间,自由再生——城市高架桥下空间的活化再生研究
- sql server 计算坐标点距离函数
- mysql命令去重_mysql去重
- 火锅赛道内卷:七欣天VS捞王,谁是 “港股火锅第三股”?