From 9b09f189e2830126a6d2f45dcba6b64c316960d0 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 16 九月 2025 20:56:33 +0800 Subject: [PATCH] 0312 增加下载模块 --- Main/System/AssetVersion/DownloadHotMgr.cs | 35 +++++++++++++++++++---------------- 1 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Main/System/AssetVersion/DownloadMgr.cs b/Main/System/AssetVersion/DownloadHotMgr.cs similarity index 92% rename from Main/System/AssetVersion/DownloadMgr.cs rename to Main/System/AssetVersion/DownloadHotMgr.cs index 88f7a21..08cccad 100644 --- a/Main/System/AssetVersion/DownloadMgr.cs +++ b/Main/System/AssetVersion/DownloadHotMgr.cs @@ -10,7 +10,7 @@ using Cysharp.Threading.Tasks; -public class DownloadMgr : SingletonMonobehaviour<DownloadMgr> +public class DownloadHotMgr : SingletonMonobehaviour<DownloadHotMgr> { #region 閰嶇疆 public static int MaxRetryTimes = 5;//鏈�澶ч噸璇曠殑娆℃暟 @@ -19,14 +19,14 @@ #endregion #region 浠诲姟鍒楄〃 - private Dictionary<string, DownloadTask> allTask = new Dictionary<string, DownloadTask>(); //鎵�鏈変换鍔$粍 - private Queue<DownloadTask> waitTask = new Queue<DownloadTask>(); //褰撳墠绛夊緟涓嬭浇鐨勪换鍔� - private Dictionary<string, DownloadTask> downloadTask = new Dictionary<string, DownloadTask>(); //褰撳墠姝e湪涓嬭浇鐨勪换鍔� + private Dictionary<string, DownloadHotTask> allTask = new Dictionary<string, DownloadHotTask>(); //鎵�鏈変换鍔$粍 + private Queue<DownloadHotTask> waitTask = new Queue<DownloadHotTask>(); //褰撳墠绛夊緟涓嬭浇鐨勪换鍔� + private Dictionary<string, DownloadHotTask> downloadTask = new Dictionary<string, DownloadHotTask>(); //褰撳墠姝e湪涓嬭浇鐨勪换鍔� #endregion 浠诲姟鍒楄〃 private bool isBegin; private int startTickcount = 0; - private Func<bool, DownloadTask, bool> onTaskCompleted;//鏂囦欢涓嬭浇瀹屾垚鍥炶皟锛�<鏄惁鍏ㄩ儴瀹屾垚锛屼换鍔″璞★紝return true:绔嬪嵆閲嶈瘯锛宖alse:鍒伴槦灏鹃噸璇�> + private Func<bool, DownloadHotTask, bool> onTaskCompleted;//鏂囦欢涓嬭浇瀹屾垚鍥炶皟锛�<鏄惁鍏ㄩ儴瀹屾垚锛屼换鍔″璞★紝return true:绔嬪嵆閲嶈瘯锛宖alse:鍒伴槦灏鹃噸璇�> //鎬婚�熷害 private float speed; @@ -69,7 +69,7 @@ } //娣诲姞浠诲姟 - public DownloadMgr AddTask(DownloadTask task) + public DownloadHotMgr AddTask(DownloadHotTask task) { if (allTask.ContainsKey(task.Key)) { @@ -82,7 +82,7 @@ } //鍑嗗涓嬭浇锛岄噸缃姸鎬� - public DownloadMgr Prepare() + public DownloadHotMgr Prepare() { Stop(); this.onTaskCompleted = null; @@ -99,7 +99,7 @@ /// </summary> /// <param name="onTaskCompleted">浠诲姟缁撴潫鍥炶皟</param> /// <returns></returns> - public DownloadMgr Begin(Func<bool, DownloadTask, bool> onTaskCompleted = null) + public DownloadHotMgr Begin(Func<bool, DownloadHotTask, bool> onTaskCompleted = null) { this.onTaskCompleted = onTaskCompleted; startTickcount = TimeUtility.AllSeconds; @@ -145,7 +145,7 @@ } // 浠诲姟涓嬭浇瀹屾垚 - private void OnTaskCompleted(DownloadTask task) + private void OnTaskCompleted(DownloadHotTask task) { downloadTask.Remove(task.Key); if (task.IsDone)//涓嬭浇鎴愬姛 @@ -180,7 +180,7 @@ -public class DownloadTask +public class DownloadHotTask { //涓嬭浇浠诲姟鐘舵�� public enum TaskState @@ -195,7 +195,7 @@ public readonly string tempFile;//涓存椂鏂囦欢鍦板潃 private readonly bool clearCache;//鏄惁娓呴櫎鏃х殑涓嬭浇缂撳瓨锛岋紙鏂偣缁紶锛� public readonly object obj; //鑷畾涔夊璞� - private Action<DownloadTask> onCompleted;//涓嬭浇瀹屾垚鍥炶皟 + private Action<DownloadHotTask> onCompleted;//涓嬭浇瀹屾垚鍥炶皟 private TaskState state;//涓嬭浇鐘舵�� public bool isStop;//涓嬭浇琚仠姝� @@ -230,7 +230,7 @@ /// <param name="localUrl">鏈湴淇濆瓨鍦板潃</param> /// <param name="obj">鑷畾涔夊璞�</param> /// <param name="clearCache">鏄惁娓呴櫎涓婃涓嬭浇鐨勭紦瀛�</param> - public DownloadTask(string remoteUrl, string localUrl, object obj = null, bool clearCache = false) + public DownloadHotTask(string remoteUrl, string localUrl, object obj = null, bool clearCache = false) { this.remoteUrl = remoteUrl; this.localFile = localUrl; @@ -266,11 +266,11 @@ if (IsWorking) return; - Co_GetHeader(); + Co_GetHeader().Forget(); // SnxxzGame.Instance.StartCoroutine(Co_GetHeader()); } - public bool BeginDownload(Action<DownloadTask> onCompleted) + public bool BeginDownload(Action<DownloadHotTask> onCompleted) { if ((IsWorking && requestHeaderOk) || IsDone)//宸茬粡鍦ㄤ笅杞戒换鍔′腑鎴栧凡缁忎笅杞藉畬鎴愪簡 return false; @@ -278,7 +278,7 @@ failedTimes = 0; this.onCompleted = onCompleted; this.isStop = false; - Co_DownloadFile(); + Co_DownloadFile().Forget(); // SnxxzGame.Instance.StartCoroutine(Co_DownloadFile()); return true; } @@ -300,7 +300,7 @@ Debug.LogFormat("寮�濮嬭幏鍙栧ご淇℃伅锛歿0}", remoteUrl); using (var www = UnityWebRequest.Head(remoteUrl)) { - www.timeout = DownloadMgr.TimeOut; + www.timeout = DownloadHotMgr.TimeOut; await www.SendWebRequest(); if (www.result == UnityWebRequest.Result.ConnectionError || www.result == UnityWebRequest.Result.ProtocolError) { @@ -443,6 +443,7 @@ private async UniTask Move(string sourceFile, string destFile) { + var copyState = 0;//澶嶅埗鏂囦欢鐘舵�侊紝0绛夊緟锛�1鎴愬姛锛�2澶辫触 try { @@ -464,6 +465,8 @@ } else SetFailed("涓存椂鏂囦欢鏀瑰悕鍑洪敊"); + + await UniTask.CompletedTask; } } -- Gitblit v1.8.0