AssetRipper 上手指南:5 分钟把 Unity 游戏资源拆成可用工程
2026/9/20 19:40:09 网站建设 项目流程

AssetRipper 上手指南:5 分钟把 Unity 游戏资源拆成可用工程

【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper

想从一款 Unity 游戏里把模型、贴图和脚本拆出来,自己动手写解析脚本?多数人不会走这条路。社区里更常见的做法是用现成工具——跨平台 Unity 资产提取工具 AssetRipper:把游戏的.assets.bundle文件丢进窗口,它就能还原出模型、贴图、音频、动画和脚本,并打包成一个标准 Unity 工程。工具本体是图形界面,Windows、macOS、Linux 三个平台都提供可直接运行的安装包,覆盖 Unity 3.5.0 到 6000.5.X 的版本区间。

把 .assets 导出成 Unity 工程

第一个要完成的任务,是把一个.assets文件变成可以在编辑器里继续打开的工程。

从官方发布页下载对应平台的压缩包即可:Windows 分 x64 与 Arm64,macOS 分 x64 与 Apple Silicon,Linux 同样两种架构。解压之后直接运行里面的主程序,不需要安装步骤。

首次启动会弹出配置窗口,这里的选项决定了后续所有导出结果的形态:

  • Mesh Export Format:默认 Native,是 Unity 原生网格格式,编辑器内兼容性最好,之后也可以通过 Unity 包转成 FBX、Obj;
  • Image Export Format:纹理按 PNG 或 JPG 导出,做素材建议留 PNG;
  • Audio Export Format:选 Default 会按资源原始容器格式导出,多数结果是 WAV 或 OGG;
  • Script Content Level:Level 2 是默认值,Mono 游戏导出完整方法体,Il2Cpp 游戏只导出存根方法;
  • C# Language Version:建议保持 Automatic - Safe,由工具按游戏情况选择 C# 版本。

配置窗口关掉之后,主窗口可以拖入文件。把.assets.bundle或整个目录拖进去,日志区会实时显示导入进度;如果游戏带有脚本,还要把程序集目录(Managed 文件夹)一起拖入,日志出现Import : Files use the 'Mono' scripting backend.说明后端识别成功,显示Unknown则说明程序集没给全。全部处理完之后从 File 菜单导出,得到的是一个完整的 Unity 工程目录,用不旧于游戏版本的 Unity 编辑器打开就能继续工作。

AssetRipper 能提取哪些资产

除了导出工程,AssetRipper 本身也是一个文件分析器,下面几种情况都靠它处理。

输入格式。工具直接吃 Unity 的序列化文件(.assets.sharedAssets)和 AssetBundle(.bundle.unity3d),压缩容器在底层统一解包,LZMA、LZ4 等算法自动识别,不需要手动指定。文件与格式的处理逻辑集中在 Source/AssetRipper.IO.Files/。

模型与网格。网格默认以 Native 格式落盘,也可以通过 Unity 包转成 FBX 或 Obj,网格与顶点数据的处理在 Source/AssetRipper.Export.Modules.Models/ 里。

纹理与 Sprite。纹理按设置导出 PNG、JPG 或 Unity sprite 格式;Sprite 格式只在 Unity 内可见,导出给外部工具用时选普通图像格式。

音频。音频保留原始容器格式,多数解出来是 WAV,部分是 OGG,可以交给音频工具继续转码。

着色器。实验性反编译器把着色器还原成可读代码,Vulkan 着色器任意平台可解,DirectX 着色器目前只能在 Windows 上解。

结构还原。编译时 Unity 会做两件事破坏原始结构:把静态标记的网格合并、把 Prefab 内联成普通节点。AssetRipper 能识别这些合并网格,跨场景智能去重并还原成单个网格;也会分析全部 GameObject 层次,把重复出现的部分重新拆成 Prefab 候选。

引用检查。导出日志会列出缺失的引用,用它定位游戏里的坏引用,或者排查哪些资产被意外打进了安装包。

AssetRipper 常见问题与排错

遇到问题时,先看日志里的关键字,再对照下面四条。

现象:Bundle 导不出脚本。原因:脚本不存储在 AssetBundle 里,只在 C# 程序集(.dll)里。解法:把.dll所在目录和 bundle 一起拖入 AssetRipper,日志出现Import : Files use the 'Mono' scripting backend.即导入成功;Il2Cpp 游戏则要先用 Cpp2IL 生成程序集再导入,Modding 常用的 Il2CppInterop 程序集不在支持范围内。

现象:日志出现Could not add pe assembly to name dictionary!原因:目录里存在两份同名程序集(按反编译器里的名字判断,不是文件名)。解法:清理重名的.dll;另外,被修改过的程序集(publicized、Il2CppInterop 产物)会直接破坏字段反序列化,尽量使用原版文件。

现象:Linux 上处理大文件时报Too many open files原因:系统文件描述符上限太低。解法:在终端执行下面命令后重新运行:

ulimit -n 1048576

现象:macOS 首次启动被系统拦截。原因:Gatekeeper 拦截未签名应用。解法:在 Finder 里对可执行文件右键选"打开",或在"系统设置 > 隐私与安全性"里点"仍要允许";若提示 Permission denied,先给可执行文件加执行权限:

chmod +x AssetRipper.GUI.Free

进阶功能与版本边界

付费版额外包含几项能力,多数默认关闭:着色器反编译仍在完善,DirectX 着色器只能在 Windows 上解;Prefab 轮廓识别默认关闭;资产去重目前只覆盖脚本、着色器、计算着色器、音频、文本资产、网格和不带 Sprite 的纹理。这些功能的说明在项目文档 docs/articles/PremiumFeatures.md 里可以逐项核对。

版本边界方面,官方口径是覆盖 Unity 3.5.0 到 6000.5.X,但不同版本的支持质量有波动;打开导出工程时,建议 Unity 编辑器版本不低于游戏所用版本。团队已排期但尚未安排时间的方向写在 docs/articles/RoadMap.md:用类型树重建程序集、SerializedFile 写入替代 YAML 导出,以及场景与材质预览。

下一步

AssetRipper 的价值在于把 Unity 资产提取压缩成"拖入文件、导出工程"两步。建议现在就下载对应平台的包,拖一个.assets文件走通配置到导出的全流程;遇到卡点,按日志关键字对照上面的避坑条目逐项排查,仍解决不了再查项目文档的常见问题页。

【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询