AssetRipper 指南:如何把 Unity 游戏文件的资源拆出来分析
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
AssetRipper 是一款用于分析 Unity 游戏文件的图形化工具:把游戏的 .assets、AssetBundle、.dll 等文件拖入窗口,它会展开资源树,让你逐一预览模型、纹理、音频与脚本,并能把整个游戏导出成可被 Unity Editor 打开的工程,或直接输出原始资源。本文面向需要分析游戏资源、迁移旧版 Unity 资产或校验自己构建产物的开发者,覆盖 Unity 3.5.0 到 6000.5.X 的支持范围。读完可以完成三件事:加载游戏文件、配置两种导出方式、排查常见报错。
AssetRipper 能解决什么问题,不适合谁
先把能力边界说清楚,避免走弯路:
- 找冗余与坏引用:在构建产物里定位被误打包的依赖资产,以及会在游戏中引发问题的断裂引用。
- 格式转换:把游戏资产转成 Unity 引擎原生格式,导出完整 Unity 工程。
- 代码检查:识别构建中无法内联或裁剪的 C# 代码,把脚本导出为源码。
- 资源预览与输出:模型、纹理、音频等以 FBX、GLTF、PNG 等常见格式查看和导出。
不适合谁:如果你的目标是 IL2Cpp 游戏且想直接反编译它的 .dll,AssetRipper 帮不上——IL2Cpp 需要先用 Cpp2IL 之类的工具生成程序集,再导入 AssetRipper;modding 用的 Il2CppInterop 程序集也不兼容。一个可验证的判别法:用 ILSpy 打开 .dll,能看到 C# 代码说明它是 C# 程序集,AssetRipper 可处理;看不到代码就是 C++ 程序集。
让 AssetRipper 跑起来并加载第一个文件
AssetRipper 提供六个平台的预编译包:Windows x64/Arm64、Mac x64/Arm64、Linux x64/Arm64,下载入口见 docs/articles/Downloads.md。下载对应系统的压缩包,解压后双击主程序,界面是本地 Web 页面,浏览器顶部就是文件加载入口。
Mac 需要先给可执行文件加权限:在解压目录打开终端,执行chmod +x AssetRipper.GUI.Free,再运行./AssetRipper.GUI.Free;遇到安全提示时在「系统与隐私」中允许运行,完整流程见 docs/articles/RunningOnMac.md。
任务:把第一个游戏文件拖进窗口。把游戏目录,或 .globalgamemanifest、.assets、AssetBundle、.dll 等文件直接拖入。预期结果:页面顶部出现「View loaded files」按钮、资源树展开,即成功;按钮若停留在灰色的「No files loaded」,说明加载失败,直接跳到排错一节。
另一个前置条件:导出 Unity 工程时,本机安装的 Unity Editor 版本不能旧于游戏版本,最好与目标游戏完全一致,版本要求见 docs/articles/Requirements.md。
两种导出路径:完整工程还是原始资源
加载游戏后先预览:点击资源树中的资产,页面会切到对应标签页——图片、3D 模型、音频、视频之外,还有十六进制、JSON、YAML 视图,实现位于 Source/AssetRipper.GUI.Web/Pages/Assets/。
导出有两个入口,用途不同:
- Export as Unity project:输出可用 Unity Editor 打开的工程,资产处于引擎原生格式,适合"把这批资产继续用于 Unity 开发"的场景。
- Export primary content:把模型、纹理、音频等原始资源直接输出到目录,不生成工程,适合"只要素材文件"的场景。
导出参数有两处限制要注意:导出目录不能是 Desktop、Documents、Downloads 这类系统目录,会被直接拒绝;目标目录非空时,工具会询问是否清空,选择保留则中止导出、不写入任何文件。可验证的完成标志:日志出现Finished exporting primary content,或导出的工程能被 Unity Editor 打开且资源齐全。
提取失败先对照这张表
多数错误集中在程序集与系统限制上。按下表逐行对照,表里没有的情况再去 docs/articles/CommonIssues.md 查细节。
| 现象 | 原因 | 处理 |
|---|---|---|
日志显示Unknownscripting backend,bundle 内 MonoBehaviour 没有脚本内容 | 没有同时导入 .dll 程序集,AssetBundle 里本身不存 C# 脚本 | 把程序集放进同一文件夹,再连同 bundle 一起拖入工具,日志出现Mono即成功 |
报错Could not add pe assembly to name dictionary! | Managed 目录里存在两个同名程序集 | 按反编译器里的程序集名(不是文件名)核对,删掉重复项 |
Linux 报Too many open files | 文件描述符上限过低 | 同一终端先执行ulimit -n 1048576再启动 |
Mac 提示Permission denied | 可执行文件没有执行权限 | 执行chmod +x AssetRipper.GUI.Free后重试 |
一个易踩的点:C++ 程序集同样使用 .dll 扩展名,ILSpy 里看不到 C# 代码就说明它不是 C# 程序集,AssetRipper 无法解析其脚本。
延伸用法:用它校验自己的构建
AssetRipper 常被忽略的场景,其实是开发者校验自己的构建产物:加载自己的游戏包,在资源树里按名字搜索,确认那个"应该被裁剪掉"的资产确实不存在;检查哪些代码没被内联或裁剪,用于核对 AOT 与 IL2Cpp 裁剪配置。验证标准很直接——搜不到冗余资产、断裂引用列表为空,说明构建健康。
想读源码或参与构建的话,完整解决方案在 Source/AssetRipper.slnx,编译需要 .NET 10 SDK 与一个支持 C# 14 的 IDE(Visual Studio 2026、VS Code 或 Rider 均可)。
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考