基于 UABEAvalonia 的 Unity AssetBundle 批量导出工具。
本工具提供命令行方式批量提取 Unity 游戏的 AssetBundle 资源,无需打开 GUI 界面。
支持从 .bundle 或 Hash 名文件(UnityFS 格式)中提取原始资源文件(.assets、.resS 等)。
项目根目录提供了 bundle.bat,可在项目根目录直接运行:
# 方式1:双击运行(使用预设路径)
bundle.bat
# 方式2:拖拽 Bundle 文件到 bat 文件上
bundle.bat "C:/Game/StreamingAssets/characters.bundle"
# 方式3:命令行指定路径
bundle.bat "C:/Game/StreamingAssets"配置方法:
编辑 bundle.bat 修改以下路径:
set "INPUT_PATH=C:\你的游戏\StreamingAssets" ← 修改为你的 Bundle 路径从 Unity AssetBundle(UnityFS 格式)中提取所有原始文件。
UABEAvalonia batchexportbundle <输入路径> [输出目录]参数说明:
<输入路径>- 单个 Bundle 文件,或包含 Bundle 的文件夹[输出目录]- 可选,默认在输入路径下创建exported文件夹
示例:
# 提取单个 Bundle
UABEAvalonia batchexportbundle "C:/Game/StreamingAssets/5a2f8c3d..." "C:/Export"
# 批量提取文件夹内所有 Bundle
UABEAvalonia batchexportbundle "C:/Game/StreamingAssets" "C:/Export/AllBundles"CAB-xxx.assets、CAB-xxx.resS 等)。
原因:.assets 文件内部通过硬编码的文件名引用 .resS 资源文件:
Texture2D:
m_StreamData:
path: "CAB-abc123.resS" ← 硬编码引用!
offset: 123456
size: 1048576如果重命名文件,资源加载时将无法找到对应的数据。
选项:
-md- 内存中解压(不创建临时.decomp文件)-kd- 保留临时解压文件
Unity AssetBundle 的文件头标识为 UnityFS:
┌─────────────────────────────────────────┐
│ Header (未压缩) │
│ ├── Magic: "UnityFS" (7 bytes) │
│ ├── Version: 0x06 / 0x16 │
│ ├── UnityVersion: "2021.3.15f1" │
│ ├── Size: 文件总大小 │
│ └── Flags: 压缩方式标志 │
├─────────────────────────────────────────┤
│ BlocksInfo (可能压缩) │
│ └── 数据块信息:偏移、大小、压缩类型 │
├─────────────────────────────────────────┤
│ Data Blocks (压缩存储) │
│ ├── Block 1: CAB-xxx.assets 数据 │
│ ├── Block 2: CAB-xxx.resS 数据 │
│ └── ... │
└─────────────────────────────────────────┘
- 识别 - 读取文件头,检测
UnityFS魔数 - 解压 - 根据 Flags 使用 LZ4/LZMA 算法解压
- 解析目录 - 读取
BlockAndDirInfo.DirectoryInfos获取文件列表 - 提取 - 根据偏移和大小从数据块中截取文件内容
典型 Bundle 包含以下文件:
| 文件名 | 类型 | 说明 |
|---|---|---|
CAB-xxx.assets |
AssetsFile | 序列化资源元数据 |
CAB-xxx.resS |
Resource | 大型二进制数据(纹理、音频) |
sharedAssets0.assets |
SharedAssets | 跨资源共享数据 |
sharedAssets0.resource |
Resource | 共享资源数据 |
# Release 版本
dotnet build UABEAvalonia/UABEAvalonia.csproj -c Release -p:Platform=x64
# 输出位置
UABEAvalonia/bin/x64/Release/net8.0/UABEAvalonia.exe- .NET 8.0 SDK
- AssetsTools.NET (已包含在 Libs/)
基于 UABEA 修改。