找回密码
 立即注册
查看: 291|回复: 0

Unity UnityWebRequest 断点续传

[复制链接]
发表于 2022-6-23 19:01 | 显示全部楼层 |阅读模式
关键代码:
// request = UnityWebRequest//curl -H 'Range: bytes=1234-5678' http://xxxxxxx/xxx.jpg >> xx.jpg (获取部分内容, "-" 后面不传参数代表到结尾)request.SetRequestHeader("Range", "bytes=" + startDownloadFileLen + "-" /* + totalDownloadFileLen */);
totalDownloadFileLen (总共多少字节,如果不填 则代表到结尾)
startDownloadFileLen (从多少字节开始,也就是你下载了多少字节)
断点续传的关系就在这。

网上有各种方法可以每帧更新下载文件的大小
例如继承 DownloadHandlerScript 来重写父类 ReceiveData 方法来获取下载了多少字节和当前的一个总进度
protected override bool ReceiveData(byte[] data, int dataLength){    downloadedFileLen += dataLength;    progress = (float)downloadedFileLen / totalFileLen;    // ...}
使用协程等待下载,下载时先用一个临时文件代替,比如 xx.txt.tmp,下载完成之后在做替换操作,如果中途退出,下次在进入时获取tmp文件的大小,则就是 startDownloadFileLen =  xx.txt.tmp的大小
yield return request.SendWebRequest();while (!request.isDone){    if (request.isNetworkError || request.isHttpError){        _httpGetState = false;        break;    }    yield return null;}if (_httpGetState){    // ...}
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 09:40 , Processed in 0.086458 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表