Files
YooAsset/Assets/YooAsset/Runtime/Services/IBundleDecryptionServices.cs
2026-01-16 10:28:01 +08:00

109 lines
2.9 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.IO;
using UnityEngine;
namespace YooAsset
{
public struct DecryptBundleInfo
{
/// <summary>
/// 资源包名称
/// </summary>
public string BundleName;
/// <summary>
/// 文件加载路径
/// </summary>
public string FileLoadPath;
/// <summary>
/// Unity引擎用于内容校验的CRC
/// </summary>
public uint FileLoadCRC;
}
public struct DecryptAsyncResult
{
/// <summary>
/// 异步请求句柄
/// </summary>
public AssetBundleCreateRequest CreateRequest;
/// <summary>
/// 托管流对象
/// 注意:流对象在资源包对象释放的时候会自动释放
/// </summary>
public Stream ManagedStream;
}
public struct DecryptSyncResult
{
/// <summary>
/// 资源包对象
/// </summary>
public AssetBundle Result;
/// <summary>
/// 托管流对象
/// 注意:流对象在资源包对象释放的时候会自动释放
/// </summary>
public Stream ManagedStream;
}
public interface IBundleDecryptionServices
{
/// <summary>
/// 同步方式获取解密的资源包
/// </summary>
DecryptSyncResult LoadAssetBundleSync(DecryptBundleInfo bundleInfo);
/// <summary>
/// 异步方式获取解密的资源包
/// </summary>
DecryptAsyncResult LoadAssetBundleAsync(DecryptBundleInfo bundleInfo);
/// <summary>
/// 后备方式获取解密的资源包
/// 注意:当正常解密方法失败后,会触发后备加载!
/// 说明建议通过LoadFromMemory()方法加载资源包作为保底机制。
/// issues : https://github.com/tuyoogame/YooAsset/issues/562
/// </summary>
DecryptSyncResult LoadAssetBundleFallback(DecryptBundleInfo bundleInfo);
/// <summary>
/// 获取解密的字节数据
/// </summary>
byte[] ReadFileData(DecryptBundleInfo bundleInfo);
/// <summary>
/// 获取解密的文本数据
/// </summary>
string ReadFileText(DecryptBundleInfo bundleInfo);
}
public struct WebDecryptBundleInfo
{
/// <summary>
/// 资源包名称
/// </summary>
public string BundleName;
/// <summary>
/// Unity引擎用于内容校验的CRC
/// </summary>
public uint FileLoadCRC;
/// <summary>
/// 文件字节数据
/// </summary>
public byte[] FileData;
}
public struct WebDecryptSyncResult
{
/// <summary>
/// 资源包对象
/// </summary>
public AssetBundle Result;
}
public interface IWebBundleDecryptionServices
{
WebDecryptSyncResult LoadAssetBundleSync(WebDecryptBundleInfo bundleInfo);
}
}