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; } } }