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

109 lines
2.9 KiB
C#

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