今天测试那边提了个问题,就是当网络极差的时候,游戏下载将会停止(即一直在等待yield return www)当时间较长时网络恢复将无法继续下载,也没有提示,需要重启才能重新下载。因为WWW不存在设置timeout属性,因此当我们网络不好请求超时的时候,无法简单的做出判断。后面查阅资料发现Unity早在5.4版本的时候就出了新的API UnityWebRequest用于替代WWW。这边就简单的记录下UnityWebRequest的使用方法。
注:本文是在之前文章Unity 下载文件 WWW与HttpWebRequest 断点续传的基础下,添加的测试代码。所以有兴趣的同学要先看一下前文。
直接上代码,我们在DownTool.cs中添加一个新的Item,WebRequestDownloadItem
/// <summary>
/// UnityWebRequest的方式下载
/// </summary>
public class WebRequestDownloadItem : DownloadItem {
UnityWebRequest m_webRequest;
public WebRequestDownloadItem(string url, string path) : base(url, path) {
}
public override void StartDownload(Action callback = null) {
base.StartDownload();
UICoroutine.instance.StartCoroutine(Download(callback));
}
IEnumerator Download(Action callback = null) {
m_webRequest = UnityWebRequest.Get(m_srcU