assetstudio 中文文档 下载 App

AssetBundle 先解压再加载 — Extract file / Extract folder 避免内存爆掉

为什么需要先 Extract

AssetStudio 加载 AssetBundle 时走的流程是:

  1. 读取 AssetBundle 文件头;
  2. 根据压缩方式(LZMA / LZ4)在内存里解压整个包;
  3. 解析 TypeTree 和对象表;
  4. 逐个反序列化资产。

整个 AssetBundle 解压后的大小可能是原文件的 2-5 倍——一个 500MB 的 AssetBundle 解压后可能 2GB+。这时候 AssetStudio 会顶到可用内存上限,轻则加载慢(几十分钟),重则被操作系统直接杀掉进程。

正确姿势

AssetStudio 和 AssetStudioMod 都在 File 菜单里提供了 Extract file 和 Extract folder 两个命令:

  1. File → Extract file:选单个 .bundle / .ab 文件,解压到指定目录;
  2. File → Extract folder:选一个目录(比如整个 APK 解压目录),里面所有 Unity AssetBundle 会被批量解压到另一个目录;
  3. 等解压进度条走完;
  4. File → Load folder:加载解压后的目录(而不是原始 AssetBundle)。

解压后的文件就是普通 Unity 序列化文件,AssetStudio 读取时不再整包占内存,大包也能稳。

解压后的目录结构

解压后的目录按 AssetBundle 文件组织:

D:\game\extracted\
├── bundle001_bundle/
│   ├── asset_1234567890
│   ├── asset_2345678901
│   └── ...
├── bundle002_bundle/
│   └── ...
└── ...

每个子目录名后面加 _bundle 后缀,里面是 AssetBundle 内部的序列化文件。AssetStudio 加载解压目录时会自动识别这些文件。

什么时候必须先 Extract

场景建议
AssetBundle > 100MB先 Extract
多个 AssetBundle 合计 > 500MB先 Extract 全部
手机上用 AssetStudio(RAM 紧张)必须先 Extract
Il2Cpp 游戏整体打包在 OBB 里先 Extract OBB
单个小 AssetBundle(< 50MB)可以直接 Load

CLI 批量解压

AssetStudioMod CLI 也支持解压:

AssetStudioModCLI <asset folder path> -m extract -o <output folder>

这在自动化流水线里很有用——先全部解压,再批量导出。

其他解压器对比

Unity 自带的 WebExtract 和 Binary2Text 也能解 AssetBundle。AssetStudio 的 Extract 和它们的区别:

实战里直接用 AssetStudio 的 Extract 就行,不用另起炉灶。