丢一个 .assets 文件进去,拿回一整个 Unity 项目:AssetRipper 资产提取实操走查
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
AssetRipper 是一款免费开源的 Unity 资产提取工具:把打包出来的.assets、.bundle资源包甚至整个游戏数据目录丢给它,它会把里面的模型、贴图、音频、动画和 C# 脚本解析出来,重新整理成一个可以直接用 Unity 打开的项目。它覆盖 Unity 3.5.0 到 6000.5.X 的版本范围,基本市面上所有版本的游戏文件都能处理,Windows、macOS、Linux 三个平台都能跑。
从一个真实任务说起
假设你手上有某款老游戏的Level1.assets文件,想看看里面的主角模型和贴图长什么样,最好还能把里面的脚本捞出来学习一下。这件事用 AssetRipper 走下来就是三步:装好工具、拖入文件、按用途选个格式导出。
先把工具跑起来
AssetRipper 基于 .NET 9 构建,安装方式很直接:
- Windows:下载对应架构的 zip 包,解压即用
- macOS:选择 Intel 或 Apple Silicon 版本运行;首次启动若被系统拦截,右键选择"打开"即可
- Linux:确认装有 libwebkit2gtk 依赖后运行
解压完成后的目录大致长这样:一个主程序加上一堆运行时库文件,没有需要额外安装的依赖:
macOS 用户如果遇到细节问题,可以参考项目里的 docs/articles/RunningOnMac.md。如果你想从源码开始,仓库地址是:
git clone https://gitcode.com/GitHub_Trending/as/AssetRipper拖入文件,等它解析
启动后是一个欢迎界面,把文件拖进窗口就会开始分析。它不需要你提前告诉它文件是什么版本——格式检测和版本识别都是自动完成的,文件越大耗时越长,一般几秒到几分钟。解析完成后你会得到一份完整的导出结果:资产按原游戏的结构组织,损坏的引用会被标出来,方便你发现坏链。
导出格式怎么选
第一次使用时你会看到一屏配置选项,每一项都有说明文字。默认值对大多数场景已经够用,先记住下面这张表就够了:
| 选项 | 默认值 | 作用 |
|---|---|---|
| Mesh Export Format | Native | 网格用 Unity 编辑器原生格式导出,后续可再转其他格式 |
| Image Export Format | Png | 所有贴图输出为 PNG |
| Audio Export Format | Default | 音频按包内原始类型导出,多数是 WAV,部分是 OGG |
| Sprite Export Format | Unity | Sprite 用 Unity 专用格式,编辑器外看不了 |
| Terrain Export Format | Unity | 地形用原生格式,方便再次导入 Unity |
| TextAsset Export Format | Parse | 文本资产导出为纯文本,并尝试猜出正确扩展名(如 .json) |
| Script Content Level | Level 2 | Mono 游戏导出完整方法体,IL2CPP 游戏导出占位方法 |
| C# Language Version | Automatic - Safe | 反编译脚本时使用的 C# 版本 |
按用途微调
只有在两种情况下需要动手改设置:
- 模型想直接喂给外部工具(如 Blender):把 Mesh 格式从 Native 换成通用格式
- 贴图要离开 Unity 使用:保持 PNG 即可;如果只想在 Unity 内继续用,可以换更紧凑的格式
其余选项保持默认,导出质量不会打折扣。
为什么它能读懂这么多版本
Unity 每个大版本的序列化格式都有调整,AssetRipper 能横跨 3.5 到 6000.5.X 这么长的文件范围,靠的不是逐个版本打补丁,而是把解析做成了一条分层的流水线。大致分工是这样的:
- 读文件:Source/AssetRipper.IO.Files/ 负责各种容器格式,包括 AssetBundle、序列化文件,以及 gzip、LZMA、zstd 等压缩流的识别和解包
- 理解资产:Source/AssetRipper.Assets/ 按 Unity 的类型树还原对象,并重建资产之间的引用关系,所以导出时不会漏掉被依赖的资源
- 转成你能用的东西:Source/AssetRipper.Export.Modules.Models/ 管网格,Source/AssetRipper.Export.Modules.Textures/ 管贴图,Source/AssetRipper.Export.Modules.Audio/ 管音频,各模块独立,新格式可以单独扩展
- 捞脚本:Source/AssetRipper.AssemblyDumper/ 负责把托管代码反编译回可读的 C#,界面本身则由 Source/AssetRipper.GUI.Web/ 以网页形式实现
所以对你来说"支持哪个版本"几乎不是问题——只要那个版本的游戏还在跑,它的文件大概率就能被打开。
哪些人用它最多
- 游戏开发者自查:找出哪些依赖资产被意外打进了包、哪些引用已经损坏、哪些代码没被 IL2CPP 裁剪掉
- 老项目抢救:旧版 Unity 装不上或装坏了,直接从生成文件里把资产完整搬进新版工程
- Mod 制作者:提取原始资源作为修改基底,分析游戏内部的数据结构,再做替换回游戏里验证
共同点是一个:你手里有 Unity 生成的二进制文件,但拿不到当初的工程。
下一步
下载对应平台的版本,挑一个你熟悉的 Unity 小项目生成的文件试一次,比读十篇教程都有用;卡住了再回头对照上面的导出格式表调整设置。
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考