AssetRipper 免费 Unity 资产提取工具:5 分钟把游戏二进制拆成模型纹理与脚本
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
游戏包越打越大、原始工程却早没了,想还原里面的模型和贴图却无从下手?AssetRipper 就是干 Unity 资产提取的免费开源工具,能把游戏里的二进制文件直接拆成拿在手里能用的资产。
核心能力速览:它能替你干哪几件事
- 完整覆盖版本跨度:官方白纸黑字支持 Unity 3.5.0 到 6000.5.X,老游戏文件基本都能吃下,适合要抢救旧工程的人。
- 一键导出 Unity 工程:拖入文件即生成带 Assets 文件夹的工程,模型、纹理、材质保留原始属性,能直接交给编辑器打开。
- 资产清单与引用关系:导入后能看出哪些资源被引用、哪些是冗余,排查打包超标时一目了然。
- 程序集反编译还原 C#:把 .dll 里的 C# 代码抄回源码,连没被裁剪掉的代码也能看到。
从零跑通:解压后怎么确认包完整、启动后看什么信号
下载:去官方 Release 页面按平台和架构(x64 或 arm64)选压缩包。发布包是自包含可执行文件,不用另装 .NET 运行时。
解压并确认完整:解压后目录里能看到 AssetRipper.GUI.Free 主程序和一组 .dylib/.dll 依赖库文件。
看到主程序和依赖库齐全,说明包没缺东西。macOS 若拦截未签名应用,在解压目录执行chmod +x AssetRipper.GUI.Free允许一次即可。
启动:双击主程序(macOS 也可在终端执行./AssetRipper.GUI.Free)。界面是本地 Web 应用,会在随机端口起服务并自动弹出浏览器窗口,停在欢迎设置页——这一屏正常显示,就是启动成功的信号。
操作:把游戏里的 .assets 或 .bundle 直接拖进窗口,等日志滚动出处理进度。
验证结果:输出目录生成带 Assets 文件夹的 Unity 项目,用不低于游戏版本的编辑器打开,资产列表完整加载,这次提取就算真正跑通了。
架构拆解:像一间修复室,每个柜子各管一段
把 AssetRipper 想象成一间专门修游戏档案的修复室,各房间各司其职。
收发台在 AssetRipper.IO.Files/:收件、拆包、解压,其中的 BundleFiles/ 拆开 .bundle 的头部和归档结构、处理 Lzma/Zstd 压缩,SerializedFiles/ 解析 .assets 及其内部类型树,这是它能覆盖 3.5.0 到 6000.5.X 的底座。
修复台在 AssetRipper.Import/:按引用关系把散落的 Unity 对象重新接回原主。
编目员在 AssetRipper.Processing/:把对象整理成场景、预制体和资产组。
装订打印在 AssetRipper.Export.UnityProjects/:写出 Unity 能直接打开的 YAML 工程,模型、纹理、音频各自过一遍格式转换,拆在 Export.Modules 下的独立子模块。
接待窗口是 AssetRipper.GUI.Web/,本地起网页、浏览器窗口就是门面;而 C# 程序集反编译则由 AssemblyDumper 这条独立抄录线完成,和资产导出互不干扰。
换个玩法:从游戏文件里能拆出什么
怀疑发布包混进测试素材:找到 Resources 或 Data 目录下的 Level0.assets 这类序列化文件拖进窗口,在资产清单里对照实际场景逐项核对,就能挑出所有没被引用的冗余资源,给瘦身清单提供依据。
要替换游戏的贴图或模型:把对应 AssetBundle 拖进来导出,拿到的是通用格式的模型与纹理文件,外加原始材质参数,直接就是替换素材的毛坯。
想看清哪些代码被强行打进包:把 Managed 文件夹里的程序集和资源包一起拖入,反编译器会还原 C# 源码,连内联失败、没被裁剪的代码也能看到,排查"为什么包这么大"有迹可循。
排障手册:拖入文件后常见的几种报错与解法
Linux 启动即报 Too many open files(症状:抛 IOException)→ 原因:系统文件描述符上限太低,大文件包里的小文件一多就触顶 → 解法:同终端先执行
ulimit -n 1048576再运行,想一劳永逸改 /etc/security/limits.conf。.bundle 提取不出 C# 脚本(症状:日志显示脚本后端为 Unknown)→ 原因:资源包本身不存脚本,脚本躺在游戏的 .dll 程序集里 → 解法:把程序集目录和资源包同一次拖入,日志出现 "Files use the 'Mono' scripting backend" 即成功。
日志报 Could not add pe assembly to name dictionary!(症状:反编译阶段报错)→ 原因:Managed 文件夹或其子目录里有两个同名程序集 → 解法:清理重复项,判重看的是反编译器里的程序集名,不是文件名。
macOS 报 Permission denied(症状:双击无反应)→ 原因:下载来的可执行文件没有执行权限 → 解法:在解压目录执行
chmod +x AssetRipper.GUI.Free。只想解包 .bundle 或压缩文件,不需要完整分析→ 解法:用仓库自带的 AssetRipper.Tools.FileExtractor/ 轻量工具,把文件拖到它的可执行文件上即可,省去启动完整 GUI 的开销。
适用与边界:哪些文件能吃下、哪些要搭其他工具
能很好覆盖:Mono 游戏 + Unity 3.5.0 到 6000.5.X 的全链路,从文件解析、对象重建、脚本反编译到项目导出一次完成,不用自己拼凑几个工具再互相传数据。
需要配合其他工具:IL2Cpp 游戏没有现成 C# 源码,得先用 Cpp2IL 这类工具生成程序集;导出后的工程要用不低于游戏版本的 Unity 编辑器打开,兼容性才最好。
已知短板:官方也承认不同版本支持质量略有差异,个别新版本特性要等后续更新跟上;游戏缺了对应 .dll 时,资源包里的脚本就还原不了;GUI 靠浏览器窗口渲染,纯无头服务器环境得加--headless参数禁用自动开窗。
获取与跟进:源码、发布节奏与社区入口
源码获取执行git clone https://gitcode.com/GitHub_Trending/as/AssetRipper即可。发布分三档:稳定版供日常使用、预发布版展示实验性功能、还有每次提交自动触发的 nightly 构建面向尝鲜者。项目由独立作者持续维护,社区主要聚集在 Discord,bug 报告和功能请求都走 Issue 渠道。界面已翻译成 22 种语言;运行依赖看 docs/articles/Requirements.md,导出报错则用 docs/articles/CommonIssues.md 检索错误文本定位。
工程丢了、包超标的脏活,AssetRipper 一条工具链全包了——从二进制到能打开的工程,就是几分钟拖拽的事。
【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考