diff --git a/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs b/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs
new file mode 100644
index 0000000..80ee87f
--- /dev/null
+++ b/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs
@@ -0,0 +1,28 @@
+using JetBrains.Annotations;
+using UnityEngine.Networking;
+
+namespace YooAsset
+{
+ public delegate UnityWebRequest DownloadRequestDelegate(string url);
+
+ ///
+ /// 自定义下载器的请求
+ ///
+ 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);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs.meta b/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs.meta
new file mode 100644
index 0000000..9b07fd2
--- /dev/null
+++ b/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3b21da9f048045e2af56d9d396b11c2f
+timeCreated: 1677207036
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs b/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs
index 83321d7..88514d1 100644
--- a/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs
+++ b/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs
@@ -32,6 +32,15 @@ namespace YooAsset
///
public static List ClearFileResponseCodes { set; get; }
+ ///
+ /// 自定义下载请求
+ ///
+ ///
+ public static void SetRequestDelegate(DownloadRequestDelegate requestDelegate)
+ {
+ DownloadRequestUtil.SetRequestDelegate(requestDelegate);
+ }
+
///
/// 更新所有下载器
///
diff --git a/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs b/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs
index 5d3a942..ad3d686 100644
--- a/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs
+++ b/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs
@@ -80,7 +80,7 @@ namespace YooAsset
if (File.Exists(_tempFilePath))
File.Delete(_tempFilePath);
- _webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
+ _webRequest = DownloadRequestUtil.NewRequest(_requestURL);
DownloadHandlerFile handler = new DownloadHandlerFile(_tempFilePath);
handler.removeFileOnAbort = true;
_webRequest.downloadHandler = handler;
@@ -109,11 +109,11 @@ namespace YooAsset
}
#if UNITY_2019_4_OR_NEWER
- _webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
+ _webRequest = DownloadRequestUtil.NewRequest(_requestURL);
var handler = new DownloadHandlerFile(_tempFilePath, true);
handler.removeFileOnAbort = false;
#else
- _webRequest = new UnityWebRequest(_requestURL, UnityWebRequest.kHttpVerbGET);
+ _webRequest = UnityWebRequestUtil.NewRequest(_requestURL);
var handler = new DownloadHandlerFileRange(_tempFilePath, _bundleInfo.Bundle.FileSize, _webRequest);
_downloadHandle = handler;
#endif
diff --git a/Assets/YooAsset/Runtime/DownloadSystem/UnityWebDataRequester.cs b/Assets/YooAsset/Runtime/DownloadSystem/UnityWebDataRequester.cs
index cdd3918..31ad283 100644
--- a/Assets/YooAsset/Runtime/DownloadSystem/UnityWebDataRequester.cs
+++ b/Assets/YooAsset/Runtime/DownloadSystem/UnityWebDataRequester.cs
@@ -29,7 +29,7 @@ namespace YooAsset
if (_webRequest == null)
{
URL = url;
- _webRequest = new UnityWebRequest(URL, UnityWebRequest.kHttpVerbGET);
+ _webRequest = DownloadRequestUtil.NewRequest(URL);
DownloadHandlerBuffer handler = new DownloadHandlerBuffer();
_webRequest.downloadHandler = handler;
_webRequest.disposeDownloadHandlerOnDispose = true;
diff --git a/Assets/YooAsset/Runtime/DownloadSystem/UnityWebFileRequester.cs b/Assets/YooAsset/Runtime/DownloadSystem/UnityWebFileRequester.cs
index c85ed1a..ba2d73b 100644
--- a/Assets/YooAsset/Runtime/DownloadSystem/UnityWebFileRequester.cs
+++ b/Assets/YooAsset/Runtime/DownloadSystem/UnityWebFileRequester.cs
@@ -39,7 +39,7 @@ namespace YooAsset
_latestDownloadBytes = 0;
_latestDownloadRealtime = Time.realtimeSinceStartup;
- _webRequest = new UnityWebRequest(URL, UnityWebRequest.kHttpVerbGET);
+ _webRequest = DownloadRequestUtil.NewRequest(URL);
DownloadHandlerFile handler = new DownloadHandlerFile(savePath);
handler.removeFileOnAbort = true;
_webRequest.downloadHandler = handler;
diff --git a/Assets/YooAsset/Runtime/YooAssets.cs b/Assets/YooAsset/Runtime/YooAssets.cs
index 4fce4f6..6e62354 100644
--- a/Assets/YooAsset/Runtime/YooAssets.cs
+++ b/Assets/YooAsset/Runtime/YooAssets.cs
@@ -168,6 +168,15 @@ namespace YooAsset
DownloadSystem.BreakpointResumeFileSize = fileBytes;
}
+ ///
+ /// 自定义下载请求
+ ///
+ ///
+ public static void SetDownloadSystemUnityWebRequest(DownloadRequestDelegate requestDelegate)
+ {
+ DownloadSystem.SetRequestDelegate(requestDelegate);
+ }
+
///
/// 设置下载系统参数,下载失败后清理文件的HTTP错误码
///