using Cysharp.Threading.Tasks; using UnityGameFramework.Runtime; using DownloadFailureEventArgs = UnityGameFramework.Runtime.DownloadFailureEventArgs; using DownloadSuccessEventArgs = UnityGameFramework.Runtime.DownloadSuccessEventArgs; namespace SepCore.AsyncTask { /// /// Download 异步扩展方法 /// public static class DownloadAsyncExtension { /// /// 异步下载文件 /// /// 下载组件 /// 下载地址 /// 下载后存放路径 /// 用户自定义数据 /// 超时时间(秒),0表示不超时 /// 下载成功事件 public static UniTask DownloadFileAsync(this DownloadComponent downloadComponent, string downloadUri, string downloadPath, object userData = null, float timeout = 300f) { int serialId = 0; UniTask waitTask = AsyncTaskHelper.WaitSuccessOrFailureAsync( DownloadSuccessEventArgs.EventId, DownloadFailureEventArgs.EventId, successArgs => successArgs.SerialId == serialId, failureArgs => failureArgs.SerialId == serialId, timeout ); serialId = downloadComponent.AddDownload(downloadPath, downloadUri, userData); return waitTask; } /// /// 异步下载文件(简化版本) /// /// 下载组件 /// 下载地址 /// 下载后存放路径 /// 超时时间(秒),0表示不超时 /// 下载成功事件 public static UniTask DownloadFileAsync(this DownloadComponent downloadComponent, string downloadUri, string downloadPath, float timeout = 300f) { return DownloadFileAsync(downloadComponent, downloadUri, downloadPath, null, timeout); } } }