AssetRipper完整教程:免费开源的Unity资产提取工具,5分钟从.assets文件里找回整个游戏
AssetRipper完整教程:免费开源的Unity资产提取工具,5分钟从.assets文件里找回整个游戏
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
先从一件小事说起:有人把一个 Unity 游戏里翻出来的.assets文件发给我,问"里面的模型能不能拿出来看看"。这玩意儿在文件管理器里双击毫无反应,普通解压工具也不认识。这类需求在 Mod 圈、旧项目恢复、竞品学习里都很常见,而AssetRipper正是为它而生的免费开源 Unity 资产提取工具——把游戏文件拖进窗口,模型、贴图、音频甚至 C# 脚本代码都会被整理成能直接导入 Unity 的完整项目。
零配置安装:AssetRipper 在 Windows、macOS、Linux 上各怎么跑
官方按操作系统和架构发布了独立压缩包,解压即用,不装运行时、不配环境变量。以 macOS 为例,解压出来是一个约 120 MB 的文件夹,里面除了主程序,还带着 libavif、libTexture2DDecoder 等一整套解析纹理、音频、视频用的动态库——这也是它"开箱就能解各种格式"的原因:
三个平台的差异很小:
- Windows:选 x64 版本解压,双击主程序即可
- macOS:Intel 与 Apple Silicon 分开发布;若系统提示安全警告,右键应用选"打开"绕过
- Linux:需要先装上 libwebkit2gtk 依赖,其余与 Windows 一致
需要强调一点:AssetRipper 只负责"拆",如果你还想把导出的工程在编辑器里打开,本地 Unity 版本要不低于目标游戏的版本(尽量一致最好),否则部分资源可能加载失败。
从拖放到导出:第一次提取的完整五步
安装完之后没有注册流程,直接干活:
- 把
.assets、.bundle、Level.x、resources.resource等文件(或整个文件夹)拖进窗口 - 在弹出的配置页里过一眼导出选项,默认值对大多数场景已经够用
- 等待日志滚完,导出目录会自动生成一个标准 Unity 工程结构
配置页里每一项都有中文说明,几个值得注意的:
| 选项 | 默认值 | 什么时候改 |
|---|---|---|
| Mesh Export Format | Native | 想要 FBX/obj 等通用格式时 |
| Image Export Format | Png | 需要无损大图时 |
| TextAsset Export Format | Parse | 自动给 JSON 等文本猜扩展名 |
| Script Content Level | Level 2 | Mono 游戏可拿到完整方法体 |
| C# Language Version | Automatic - Safe | 反编译脚本的目标 C# 版本 |
三种真实用法:开发者、恢复者、Mod作者各取所需
游戏开发者自查——README 里列的用途很实在:找出被误打进包的依赖资源、定位构建里没能内联或裁剪掉的代码、发现会导致运行时问题的断引用。把这当成上线前的体检工具,比它"提取工具"的名声更实用。
旧项目资源恢复——老工程换机器、换 Unity 版本后打不开时,用 AssetRipper 把资产抽出来转成原生引擎格式,再在新工程里重建,是很多老项目的"复活"路径。
Mod 开发——提取原始资源作为修改基础,做出替换后打回游戏。这里有个前提:Mono 后端的游戏要把Managed目录里的 dll 和 bundle一起拖进来脚本才会导出;IL2Cpp 游戏则要先用 Cpp2IL 把 dll 生成出来。
拆解解析引擎:它凭什么"认识"从 3.5 到 6000 的文件
AssetRipper 官方声明支持 Unity3.5.0到6000.5.X,这个跨度意味着市面上几乎找不到它打不开的年代。背后是一套分层的实现:
- 文件读取层:Source/AssetRipper.IO.Files/ 负责识别 Unity 的各种容器格式(SerializedFile、AssetBundle、resource 等),并处理各类压缩流,还支持 brotli/gzip/lzma 等压缩变体
- 导出层:按资产类型拆成独立模块,模型在 Source/AssetRipper.Export.Modules.Models/(含 GLB 导出)、纹理在 Source/AssetRipper.Export.Modules.Textures/、音频在 Source/AssetRipper.Export.Modules.Audio/
- 脚本恢复层:AssemblyDumper 系列项目负责把 .NET 程序集反编译回可读 C#,这也是同类工具里少见的完整链路
想深入原理,可以直接翻源码里的Notes.md,关键模块都留了设计说明。
常见坑位:四个高频报错的现成解法
官方文档把这些问题整理成了 docs/articles/CommonIssues.md,我把最常说的四个提炼出来:
- Bundle 里导不出 Mono 脚本:脚本本身不在 bundle 里,而在 dll 里。把 Managed 文件夹和 bundle 同时拖入,看到日志出现
Files use the 'Mono' scripting backend.就说明对了 - 重复程序集报错(
Could not add pe assembly to name dictionary!):Managed 目录里存在两个同名的程序集,删掉多余的那份 - Linux 报 Too many open files:先执行
ulimit -n 1048576再启动,即可临时放宽文件描述符上限 - 改过的 dll 读不动:publicize、删特性、改方法体这类修改都会破坏字段反序列化,尽量用未修改过的原始程序集
加入生态:不写代码也能为它出力
项目按 GPLv3 协议开源,界面本地化已经覆盖中文、日文、阿拉伯文等二十多种语言,贡献路径对新手很友好:
- 报告问题:带上 Unity 版本、后端类型(Mono/IL2Cpp)和日志,能大幅加快排查
- 翻译补充:Localizations 目录下每个语言就是一个 JSON 文件
- 参与开发:从源码构建需要 .NET 10 SDK 加任一支持 C# 14 的 IDE,clone 仓库:
git clone https://gitcode.com/GitHub_Trending/as/AssetRipper从"把一个 .assets 拆开"到"参与维护这个拆文件的工具",中间只隔一次 git clone。找一个手头的小游戏文件,现在就把 AssetRipper 跑起来试试——第一次导出的那几分钟,会告诉你它值不值得常驻你的工具箱。
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
