mirror of https://github.com/tuyoogame/YooAsset
Merge pull request #70 from HXiaoMing/feat-custom-download-request
feat(DownloadSystem):支持自定义下载请求pull/72/head
commit
e38d0bc6d0
|
@ -0,0 +1,28 @@
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
namespace YooAsset
|
||||||
|
{
|
||||||
|
public delegate UnityWebRequest DownloadRequestDelegate(string url);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义下载器的请求
|
||||||
|
/// </summary>
|
||||||
|
internal static class DownloadRequestUtil
|
||||||
|
{
|
||||||
|
|
||||||
|
[CanBeNull] private static DownloadRequestDelegate _downloadRequestDelegate;
|
||||||
|
|
||||||
|
public static void SetRequestDelegate(DownloadRequestDelegate requestDelegate)
|
||||||
|
{
|
||||||
|
_downloadRequestDelegate = requestDelegate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UnityWebRequest NewRequest(string requestURL)
|
||||||
|
{
|
||||||
|
return _downloadRequestDelegate != null
|
||||||
|
? _downloadRequestDelegate?.Invoke(requestURL)
|
||||||
|
: new UnityWebRequest(requestURL, UnityWebRequest.kHttpVerbGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3b21da9f048045e2af56d9d396b11c2f
|
||||||
|
timeCreated: 1677207036
|
|
@ -32,6 +32,15 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static List<long> ClearFileResponseCodes { set; get; }
|
public static List<long> ClearFileResponseCodes { set; get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义下载请求
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="requestDelegate"></param>
|
||||||
|
public static void SetRequestDelegate(DownloadRequestDelegate requestDelegate)
|
||||||
|
{
|
||||||
|
DownloadRequestUtil.SetRequestDelegate(requestDelegate);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 更新所有下载器
|
/// 更新所有下载器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -80,7 +80,7 @@ namespace YooAsset
|
||||||
if (File.Exists(_tempFilePath))
|
if (File.Exists(_tempFilePath))
|
||||||
File.Delete(_tempFilePath);
|
File.Delete(_tempFilePath);
|
||||||
|
|
||||||
_webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
|
_webRequest = DownloadRequestUtil.NewRequest(_requestURL);
|
||||||
DownloadHandlerFile handler = new DownloadHandlerFile(_tempFilePath);
|
DownloadHandlerFile handler = new DownloadHandlerFile(_tempFilePath);
|
||||||
handler.removeFileOnAbort = true;
|
handler.removeFileOnAbort = true;
|
||||||
_webRequest.downloadHandler = handler;
|
_webRequest.downloadHandler = handler;
|
||||||
|
@ -109,11 +109,11 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
|
|
||||||
#if UNITY_2019_4_OR_NEWER
|
#if UNITY_2019_4_OR_NEWER
|
||||||
_webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
|
_webRequest = DownloadRequestUtil.NewRequest(_requestURL);
|
||||||
var handler = new DownloadHandlerFile(_tempFilePath, true);
|
var handler = new DownloadHandlerFile(_tempFilePath, true);
|
||||||
handler.removeFileOnAbort = false;
|
handler.removeFileOnAbort = false;
|
||||||
#else
|
#else
|
||||||
_webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
|
_webRequest = UnityWebRequestUtil.NewRequest(_requestURL);
|
||||||
var handler = new DownloadHandlerFileRange(_tempFilePath, _bundleInfo.Bundle.FileSize, _webRequest);
|
var handler = new DownloadHandlerFileRange(_tempFilePath, _bundleInfo.Bundle.FileSize, _webRequest);
|
||||||
_downloadHandle = handler;
|
_downloadHandle = handler;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace YooAsset
|
||||||
if (_webRequest == null)
|
if (_webRequest == null)
|
||||||
{
|
{
|
||||||
URL = url;
|
URL = url;
|
||||||
_webRequest = new UnityWebRequest(URL, UnityWebRequest.kHttpVerbGET);
|
_webRequest = DownloadRequestUtil.NewRequest(URL);
|
||||||
DownloadHandlerBuffer handler = new DownloadHandlerBuffer();
|
DownloadHandlerBuffer handler = new DownloadHandlerBuffer();
|
||||||
_webRequest.downloadHandler = handler;
|
_webRequest.downloadHandler = handler;
|
||||||
_webRequest.disposeDownloadHandlerOnDispose = true;
|
_webRequest.disposeDownloadHandlerOnDispose = true;
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace YooAsset
|
||||||
_latestDownloadBytes = 0;
|
_latestDownloadBytes = 0;
|
||||||
_latestDownloadRealtime = Time.realtimeSinceStartup;
|
_latestDownloadRealtime = Time.realtimeSinceStartup;
|
||||||
|
|
||||||
_webRequest = new UnityWebRequest(URL, UnityWebRequest.kHttpVerbGET);
|
_webRequest = DownloadRequestUtil.NewRequest(URL);
|
||||||
DownloadHandlerFile handler = new DownloadHandlerFile(savePath);
|
DownloadHandlerFile handler = new DownloadHandlerFile(savePath);
|
||||||
handler.removeFileOnAbort = true;
|
handler.removeFileOnAbort = true;
|
||||||
_webRequest.downloadHandler = handler;
|
_webRequest.downloadHandler = handler;
|
||||||
|
|
|
@ -168,6 +168,15 @@ namespace YooAsset
|
||||||
DownloadSystem.BreakpointResumeFileSize = fileBytes;
|
DownloadSystem.BreakpointResumeFileSize = fileBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义下载请求
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="requestDelegate"></param>
|
||||||
|
public static void SetDownloadSystemUnityWebRequest(DownloadRequestDelegate requestDelegate)
|
||||||
|
{
|
||||||
|
DownloadSystem.SetRequestDelegate(requestDelegate);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置下载系统参数,下载失败后清理文件的HTTP错误码
|
/// 设置下载系统参数,下载失败后清理文件的HTTP错误码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Reference in New Issue