vampire-like/Assets/GameMain/Scripts/Runtime/BuiltinComponent/AsyncTask/DownloadAsyncExtension.cs

59 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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