把 .assets 变成 FBX 和 PNG:AssetRipper 免费 Unity 资源提取实操教程
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
AssetRipper 是一款免费的 Unity 资源提取 GUI 工具:把游戏的 .assets、.bundle 文件或整个游戏目录拖进去,就能把 3D 模型、纹理、音频导出成 FBX、PNG、WAV。本文写给做游戏逆向研究、Mod 制作、以及想学资源组织方式的新手,不要求你有 Unity 开发经验。
先说你能拿到什么具体结果:
- 网格(mesh,即 3D 模型)能导出成 FBX,Blender、Maya 直接能打开,也可以选引擎原生格式方便回导 Unity;
- 纹理和精灵图导出成 PNG,带透明通道;
- 音频导出成 WAV,部分是 OGG;
- 游戏自带的 C# 脚本,也就是 Assembly-CSharp.dll 这类程序集文件(Unity 把 C# 脚本编译打包成的 .dll),可以反编译导出,让你直接读到游戏逻辑代码。
Unity 资源提取:AssetRipper 到底能帮你干什么
它支持哪些 Unity 版本
官方声明覆盖 Unity 3.5.0 到 6000.5.X,也就是说从十多年的老游戏到最新的构建基本都能打开。不同版本的支持质量略有差异,但主流游戏版本上很少会卡死。
它不只是"拖进去就导出"
这个工具的核心是解析资源之间的依赖关系,而不是简单倒出文件。它能帮你定位哪些资源被哪些资源引用、找出会导致运行报错的断裂引用、发现被误打包进来的冗余资源。所以除了提取,拿它做资源审计和 Mod 前的底稿分析也很顺手。最常见的用途组合就是:AssetRipper 导出 FBX 模型、PNG 纹理、WAV 音频,再顺手把脚本反编译出来对照着看。
准备工作:拿到能跑的版本
直接下载官方发布的 GUI
官方发布版提供各平台的 GUI 包,macOS 用户按 CPU 选 x64 或 arm64 的压缩包。解压后运行./AssetRipper.GUI.Free,如果提示没有权限,先对可执行文件执行一次chmod +x再运行。这就是你解压后会看到的文件布局,中间那个文本类型的 AssetRipper 文件就是主程序:
运行成功就是这个界面,顶部菜单有 File、Export、Language、About 四项,主区域是拖文件进来的入口:
从源码构建
如果你想自己编译,需要 .NET 10 SDK,以及一个支持 C# 14 的编辑器(Visual Studio 2026、带 C# 扩展的 VS Code 或 Rider 都行)。两条命令搞定:
git clone https://gitcode.com/GitHub_Trending/as/AssetRipper dotnet build AssetRipper.slnx -c Release三步跑通 Unity 资源提取:从 .assets 解析到导出结果
第一步:加载游戏文件
AssetRipper 接受几种入口:单个 .assets 文件(Unity 的序列化资源容器,大部分引擎资源存在这里)、.bundle 资源包(AssetBundle,Unity 打包资源的一种通用格式),或者整个游戏目录。把目标直接拖进窗口就会自动解析。解析逻辑集中在 Source/AssetRipper.IO.Files/,想深挖 .assets 文件解析的实现,从这开始读。
第二步:调三个最关键的配置项
首次启动会弹出配置窗口。选项很多,第一次跑只需要关心这三个:
- Mesh Export Format:默认 Native,即引擎原生格式,回导 Unity 时最稳。如果你的目标是 Blender 或别的 3D 软件,换成通用格式。
- Image Export Format:选 PNG。保留 Alpha 通道,任何看图工具都能打开,纹理提取最稳的选择。
- Script Content Level:默认 Level 2,对 Mono 后端游戏导出完整方法体;IL2Cpp 游戏在这个级别下方法体是空的,遇到这种情况就调到 Level 3 尝试恢复。
其余像 Audio Export Format、Sprite Export Format、Terrain Export Format 这些,第一次保持默认,等看到产物再回头调。
第三步:导出并验证产物
指定输出目录后走 Export 菜单,过程有进度条和日志。跑完后抽查几个文件:模型扔进 3D 工具确认有几何体和材质,纹理确认尺寸和透明度正常。发现引用断链就回第二步换导出格式重来。
踩坑速查
⚠️ 下面四条是日志里最高频的报错,按"现象 → 原因 → 修法"记就行。
坑 1:MonoBehaviour 里没脚本代码,或日志出现 "Unknown scripting backend"
原因:脚本不存放在 .assets 或 bundle 文件里,而在 .dll 程序集里,AssetRipper 必须同时看到程序集才能反编译脚本。
修法:把 Assembly-CSharp.dll 等程序集文件和资源包一起拖进来。日志出现 "Files use the 'Mono' scripting backend" 就说明对了,出现 "Unknown" 就是没带齐。
坑 2:日志报 "Could not add pe assembly to name dictionary!"
原因:Managed 目录里存在两个同名的程序集(按程序集名判断,不是文件名)。
修法:在目录树里找到重复的那份删掉一份,重新导入。
坑 3:Linux 上报 "Too many open files"
原因:系统文件描述符上限太低,AssetRipper 一次打开大量文件就触顶。
修法:同一个终端里先执行ulimit -n 1048576,再启动程序。
坑 4:IL2Cpp 游戏导出的方法体全是空的
原因:IL2Cpp 后端的游戏不携带 C# 方法体,Level 2 级别只能给空壳。
修法:Script Content Level 调到 Level 3,它会尽量安全地恢复 IL2Cpp 方法。注意 Mod 圈常见的 Il2CppInterop 程序集不被支持,需要先借助专用反编译器(如 Cpp2IL)生成程序集再导入。
源码看哪里、文档在哪
想读代码,重点盯四个目录:
- Source/AssetRipper.Assets/:资产数据结构与遍历逻辑
- Source/AssetRipper.Export/:各格式的导出实现
- Source/AssetRipper.Configuration/:配置管理,你刚才调的那些选项都存在这里
- Source/AssetRipper.GUI.Web/:基于 Web 的图形界面
文档方面,docs/articles/ 是使用文章合集,docs/api/ 是 API 参考,docs/articles/CommonIssues.md 是官方踩坑清单,和本节内容互为补充。遇到本文没覆盖的报错,把完整日志贴到仓库的 Issues 里直接提问,通常能得到明确答复。
打开 docs/articles/ 里的教程,挑一个你手头的游戏目录,把这套流程从头到尾跑一遍。
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考