using System.Collections.Generic;
namespace YooAsset
{
///
/// 导入的资源包信息
///
public struct ImportBundleInfo
{
///
/// 本地文件路径
///
public string FilePath;
///
/// 资源包名称
///
public string BundleName;
///
/// 资源包GUID
///
public string BundleGUID;
}
///
/// 下载请求状态
///
internal enum EDownloadRequestStatus
{
///
/// 未开始
///
None,
///
/// 进行中
///
Running,
///
/// 已成功
///
Succeed,
///
/// 已失败
///
Failed,
///
/// 已中止
///
Aborted,
}
///
/// 文件下载请求参数
///
///
/// 用于将下载内容保存到本地文件的请求配置。
/// 支持断点续传和追加写入模式。
///
internal struct DownloadFileRequestArgs
{
///
/// 请求地址
///
public readonly string URL;
///
/// 响应的超时时间(单位:秒)
///
///
/// 当 Timeout 设置为 0 时,不应用超时。
/// 设置的超时值可能应用于Android上的每个URL重定向,这可能会导致响应时间增加。
///
public readonly int Timeout;
///
/// 看门狗超时时间(单位:秒)
///
///
/// 用于监控下载任务的数据接收情况。
/// 规则说明:
/// 1. 当设置值为 0 时,表示禁用看门狗监控。
/// 2. 每次接收到下载数据时,看门狗计时器会重置。
/// 3. 若在设定的时间范围内未收到任何数据,任务将被自动终止。
///
public readonly int WatchdogTime;
///
/// 文件保存路径
///
public readonly string SavePath;
///
/// 是否追加写入文件
///
///
/// 配合 ResumeFromBytes 使用,用于断点续传场景。
///
public readonly bool AppendToFile;
///
/// 中止请求时是否删除目标文件
///
public readonly bool RemoveFileOnAbort;
///
/// 断点续传的起始字节(小于等于 0 表示不启用)
///
///
/// 推荐由后端自动设置 Range 请求头:"bytes={ResumeFromBytes}-"。
///
public readonly long ResumeFromBytes;
///
/// 自定义请求头(可选)
///
public Dictionary Headers;
///
/// 构造文件下载请求参数
///
public DownloadFileRequestArgs(
string url,
string savePath,
int timeout,
int watchdogTime,
bool appendToFile = false,
bool removeFileOnAbort = true,
long resumeFromBytes = 0)
{
URL = url;
SavePath = savePath;
Timeout = timeout;
WatchdogTime = watchdogTime;
AppendToFile = appendToFile;
RemoveFileOnAbort = removeFileOnAbort;
ResumeFromBytes = resumeFromBytes;
Headers = null;
}
///
/// 添加请求头数据
///
public void AddRequestHeader(string name, string value)
{
if (Headers == null)
Headers = new Dictionary(10);
Headers.Add(name, value);
}
}
///
/// 数据下载请求参数(通用)
///
///
/// 用于下载到内存的请求配置。
/// 可用于字节数组(bytes)或文本(text)下载。
///
internal struct DownloadDataRequestArgs
{
///
/// 请求地址
///
public readonly string URL;
///
/// 响应的超时时间(单位:秒)
///
///
/// 当 Timeout 设置为 0 时,不应用超时。
/// 设置的超时值可能应用于Android上的每个URL重定向,这可能会导致响应时间增加。
///
public readonly int Timeout;
///
/// 看门狗超时时间(单位:秒)
///
///
/// 用于监控下载任务的数据接收情况。
/// 规则说明:
/// 1. 当设置值为 0 时,表示禁用看门狗监控。
/// 2. 每次接收到下载数据时,看门狗计时器会重置。
/// 3. 若在设定的时间范围内未收到任何数据,任务将被自动终止。
///
public readonly int WatchdogTime;
///
/// 自定义请求头(可选)
///
public Dictionary Headers;
///
/// 构造数据下载请求参数
///
/// 请求地址
/// 通用请求参数
public DownloadDataRequestArgs(string url, int timeout, int watchdogTime)
{
URL = url;
Timeout = timeout;
WatchdogTime = watchdogTime;
Headers = null;
}
///
/// 添加请求头数据
///
public void AddRequestHeader(string name, string value)
{
if (Headers == null)
Headers = new Dictionary(10);
Headers.Add(name, value);
}
}
///
/// AssetBundle 下载请求参数
///
///
/// 用于下载并加载 Unity AssetBundle 的请求配置。
/// 支持 Unity 内置缓存机制和 CRC 校验。
///
internal struct DownloadAssetBundleRequestArgs
{
///
/// 请求地址
///
public readonly string URL;
///
/// 响应的超时时间(单位:秒)
///
///
/// 当 Timeout 设置为 0 时,不应用超时。
/// 设置的超时值可能应用于Android上的每个URL重定向,这可能会导致响应时间增加。
///
public readonly int Timeout;
///
/// 看门狗超时时间(单位:秒)
///
///
/// 用于监控下载任务的数据接收情况。
/// 规则说明:
/// 1. 当设置值为 0 时,表示禁用看门狗监控。
/// 2. 每次接收到下载数据时,看门狗计时器会重置。
/// 3. 若在设定的时间范围内未收到任何数据,任务将被自动终止。
///
public readonly int WatchdogTime;
///
/// 禁用 Unity 的网络缓存
///
public readonly bool DisableUnityWebCache;
///
/// AssetBundle 文件哈希(用于 UnityWebRequest 的缓存)
///
///
/// 仅当 DisableUnityWebCache 为 false 时需要。
///
public readonly string FileHash;
///
/// Unity CRC 校验值
///
public readonly uint UnityCRC;
///
/// 自定义请求头(可选)
///
public Dictionary Headers;
///
/// 构造 AssetBundle 下载请求参数
///
public DownloadAssetBundleRequestArgs(
string url,
int timeout,
int watchdogTime,
bool disableUnityWebCache = true,
string fileHash = null,
uint unityCrc = 0)
{
URL = url;
Timeout = timeout;
WatchdogTime = watchdogTime;
DisableUnityWebCache = disableUnityWebCache;
FileHash = fileHash;
UnityCRC = unityCrc;
Headers = null;
}
///
/// 添加请求头数据
///
public void AddRequestHeader(string name, string value)
{
if (Headers == null)
Headers = new Dictionary(10);
Headers.Add(name, value);
}
}
///
/// 模拟下载请求参数
///
///
/// 用于编辑器模式下模拟下载进度,不进行实际网络请求。
///
internal struct DownloadSimulateRequestArgs
{
///
/// 请求地址(仅用于标识)
///
public readonly string URL;
///
/// 模拟的文件大小(字节)
///
public readonly long FileSize;
///
/// 模拟的下载速度(字节/秒)
///
///
/// 用于计算模拟的下载进度。
///
public readonly long DownloadSpeed;
///
/// 构造模拟下载请求参数
///
/// 请求地址(仅用于标识)
/// 模拟的文件大小(字节)
/// 模拟的下载速度(字节/秒),默认 1MB/s
public DownloadSimulateRequestArgs(string url, long fileSize, long downloadSpeed = 1024 * 1024)
{
URL = url;
FileSize = fileSize;
DownloadSpeed = downloadSpeed > 0 ? downloadSpeed : 1024 * 1024;
}
}
}