序
当你从网上下载文件时,偶尔总会遇到网络不佳的情况,这个时候,端点续传就帮上了大忙。当然,如果能把它应用到游戏文件的下载更新上,那将会给用户带来更好的体验,下面这篇文章将帮助你,在UnityWebRequest的基础上实现端点续传的功能,以及如何应用断点续传来优化你的下载方案。
原理
他的原理很简单,只需要在请求数据的时候带上一个A-B的Range参数,来获取A-B的数据段。假设一个文件的大小为2000个字节,那么我们填写区间的有效值应该是0~1999
注意:超出1999后将返回所有数据。
实现思路
- 把一个整体分成数个片段
- 每个片段由具体的区间数值
- 当一个片段请求成功后,将它的数据写入缓冲区
- 当一个片段请求失败后,抛弃它的数据,重新请求
这种思路最简单,好比我们把每个人的工作都事先分好,只请单独的角色来完成这份工作,最后拿到一个结果。那么,更高级的方案下我们可以同时让N个角色,去同时完成N份这样差事,好提高下载的效率。
如何实现
下面这段代码演示了,最简单的实现思路
IEnumerator Start()
{
string url = "你的下载地址";
var headRequest = UnityWebRequest.Head(url);
MemoryStream ms = new MemoryStream();
yield return headReques