From bcf637260226e5e68baa33aead00296a9fb0fd4e Mon Sep 17 00:00:00 2001 From: hevinci Date: Fri, 24 Feb 2023 19:45:05 +0800 Subject: [PATCH] update download system --- .../DownloadSystem/DownloadRequestDelegate.cs | 28 --------------- .../DownloadRequestDelegate.cs.meta | 3 -- .../Runtime/DownloadSystem/DownloadSystem.cs | 36 ++++++++++++++----- .../Downloader/FileDownloader.cs | 6 ++-- .../DownloadSystem/UnityWebDataRequester.cs | 2 +- .../DownloadSystem/UnityWebFileRequester.cs | 2 +- Assets/YooAsset/Runtime/YooAssets.cs | 17 +++++---- 7 files changed, 40 insertions(+), 54 deletions(-) delete mode 100644 Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs delete mode 100644 Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs.meta diff --git a/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs b/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs deleted file mode 100644 index 80ee87f..0000000 --- a/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index 9b07fd2..0000000 --- a/Assets/YooAsset/Runtime/DownloadSystem/DownloadRequestDelegate.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -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 88514d1..32da42d 100644 --- a/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs +++ b/Assets/YooAsset/Runtime/DownloadSystem/DownloadSystem.cs @@ -6,6 +6,11 @@ using UnityEngine.Networking; namespace YooAsset { + /// + /// 自定义下载器的请求委托 + /// + public delegate UnityWebRequest DownloadRequestDelegate(string url); + /// /// 1. 保证每一时刻资源文件只存在一个下载器 /// 2. 保证下载器下载完成后立刻验证并缓存 @@ -17,10 +22,15 @@ namespace YooAsset private static readonly List _removeList = new List(100); + /// + /// 自定义下载器的请求委托 + /// + public static DownloadRequestDelegate RequestDelegate = null; + /// /// 自定义的证书认证实例 /// - public static CertificateHandler CertificateHandlerInstance; + public static CertificateHandler CertificateHandlerInstance = null; /// /// 启用断点续传功能文件的最小字节数 @@ -32,14 +42,6 @@ namespace YooAsset /// public static List ClearFileResponseCodes { set; get; } - /// - /// 自定义下载请求 - /// - /// - public static void SetRequestDelegate(DownloadRequestDelegate requestDelegate) - { - DownloadRequestUtil.SetRequestDelegate(requestDelegate); - } /// /// 更新所有下载器 @@ -75,7 +77,11 @@ namespace YooAsset } _downloaderDic.Clear(); _removeList.Clear(); + + RequestDelegate = null; + CertificateHandlerInstance = null; BreakpointResumeFileSize = int.MaxValue; + ClearFileResponseCodes.Clear(); } @@ -110,6 +116,18 @@ namespace YooAsset } } + /// + /// 创建一个新的网络请求 + /// + public static UnityWebRequest NewRequest(string requestURL) + { + if (RequestDelegate != null) + return RequestDelegate.Invoke(requestURL); + + var request = new UnityWebRequest(requestURL, UnityWebRequest.kHttpVerbGET); + return request; + } + /// /// 获取下载器的总数 /// diff --git a/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs b/Assets/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs index ad3d686..5576674 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 = DownloadRequestUtil.NewRequest(_requestURL); + _webRequest = DownloadSystem.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 = DownloadRequestUtil.NewRequest(_requestURL); + _webRequest = DownloadSystem.NewRequest(_requestURL); var handler = new DownloadHandlerFile(_tempFilePath, true); handler.removeFileOnAbort = false; #else - _webRequest = UnityWebRequestUtil.NewRequest(_requestURL); + _webRequest = DownloadSystem.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 31ad283..6c0a213 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 = DownloadRequestUtil.NewRequest(URL); + _webRequest = DownloadSystem.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 ba2d73b..f5c08bc 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 = DownloadRequestUtil.NewRequest(URL); + _webRequest = DownloadSystem.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 6e62354..466be01 100644 --- a/Assets/YooAsset/Runtime/YooAssets.cs +++ b/Assets/YooAsset/Runtime/YooAssets.cs @@ -168,15 +168,6 @@ namespace YooAsset DownloadSystem.BreakpointResumeFileSize = fileBytes; } - /// - /// 自定义下载请求 - /// - /// - public static void SetDownloadSystemUnityWebRequest(DownloadRequestDelegate requestDelegate) - { - DownloadSystem.SetRequestDelegate(requestDelegate); - } - /// /// 设置下载系统参数,下载失败后清理文件的HTTP错误码 /// @@ -193,6 +184,14 @@ namespace YooAsset DownloadSystem.CertificateHandlerInstance = instance; } + /// + /// 设置下载系统参数,自定义下载请求 + /// + public static void SetDownloadSystemUnityWebRequest(DownloadRequestDelegate requestDelegate) + { + DownloadSystem.RequestDelegate = requestDelegate; + } + /// /// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒) ///