十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AssetRipper 完整指南:从 Unity 游戏文件里提取、还原并导出资源

AssetRipper 完整指南:从 Unity 游戏文件里提取、还原并导出资源 AssetRipper 完整指南从 Unity 游戏文件里提取、还原并导出资源【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipperAssetRipper 是一款跨平台的 Unity 资源提取工具基于 .NET 构建支持 Windows、macOS、Linux能从 .assets、.bundle 等 Unity 文件中提取模型、纹理、音频、脚本等资产并转成原生 Unity 引擎格式或通用格式PNG、WAV、GLB 等。它覆盖 Unity 3.5.0 到 6000.5.X 的绝大多数版本图形界面下拖入文件即可开始处理也可以作为库或命令行入口集成进自己的流程。先弄懂谁在什么情况下需要它场景一你正在做 Mod 或逆向研究拿到一个打包好的 Unity 游戏目录。游戏里的模型、贴图、音频都封在.assets、.bundle、Resources.assets这类序列化文件里肉眼完全读不了。AssetRipper 把它们解析成带层级结构的项目模型导成网格文件、纹理导成 PNG/JPG、音频导成 WAV/OGG脚本Mono 后端游戏还能还原出可读的 C# 代码。场景二你是游戏开发者想知道自己的发布包里到底带了什么——哪些依赖资源被误打包进去、哪些代码没能被裁剪掉、哪些资产引用已经失效会在运行时炸掉。AssetRipper 把包完整读出来之后这些问题在资源树里一目了然。场景三你想把提取结果重新导回 Unity 编辑器继续用。选 Native 格式的网格、Unity 格式的精灵和地形导出的项目可以直接被对应版本的 Unity 打开。快速上手跟着做十分钟跑通第一份导出第 1 分钟选对你的安装包去官方发布页下载与你平台匹配的稳定版release压缩包命名规律是AssetRipper_平台_架构.zip平台架构Windowsx64 / Arm64macOSx64Intel/ arm64Apple SiliconM 系列芯片选这个Linuxx64 / Arm64发布页另外还提供 pre-release带实验功能可能不稳和 nightly每个提交自动构建仅给尝鲜者。日常使用选稳定版即可。第 2 分钟解压运行Windows / Linux解压后直接运行里面的可执行文件即可。Linux 用户如果依赖缺失图形界面需要 webkit2gtk按发行版装一下例如 Ubuntu/Debian 执行sudo apt install libwebkit2gtk-4.1-devFedora/RHEL 执行sudo dnf install webkit2gtk4.1-devel。macOS右键压缩包选择打开解压进入解压出的文件夹例如AssetRipper_mac_arm64。第一次直接双击运行会被 Gatekeeper 拦截提示开发者无法验证。这是正常的——首次启动时先点取消然后到 系统设置 → 隐私与安全性 里点仍要打开之后重新双击就能进入界面。后续再启动直接双击可执行文件就行。第 35 分钟首次启动与配置启动后你会看到一个Welcome To AssetRipper的配置面板这就是核心配置项逐项说清楚Mesh Export Format网格导出格式Native是默认值编辑器内兼容性最好后续可通过 Unity 包转成其他格式如果你要在编辑器外查看模型再考虑 FBX/OBJ 等选项。Image Export Format图像导出格式Png默认覆盖所有导出图像纹理要无损就保持 PNG。Audio Export Format音频导出格式Default会把音频按源格式导出大多数是 WAV部分是 OGG。Sprite Export Format精灵导出格式Unity是 Unity 内部精灵格式编辑器外打不开。Terrain Export Format地形格式Unity原生地形格式适合打算导回 Unity 的场景。TextAsset Export FormatParse会尝试识别文本类型并补上正确扩展名比如 JSON 文件拿到.json后缀。Script Content Level脚本内容级别Level 2是默认Mono 游戏导出完整方法体Il2Cpp 游戏只导出方法骨架。Level 3 是 Premium 的传统 Il2Cpp 反编译见后文。C# Language VersionAutomatic - Safe表示反编译脚本时自动选择合适的 C# 语言版本。顶部两个开关Ignore Asset Bundle Content Paths和Skip StreamingAssets Folder默认都不勾后者在 StreamingAssets 目录很大、而你只关心包体本身时可以勾上。第 510 分钟拖入文件看结果把.assets、.bundle、.dll文件或整个文件夹直接拖进窗口也可以从菜单导入。工具会自动识别文件类型、判断脚本后端Mono 还是 Il2Cpp解析完成后你会得到一棵完整的资源树场景、预制件、GameObject 层级、材质、纹理、音频、MonoBehaviour 组件都在其中日志窗口实时滚动显示处理进度。导出时选择导出目标即可得到可直接打开的 Unity 项目目录或散装资源文件。能力拆解它到底能干什么资产解析与重建。支持.assets、.sharedAssets、.unity场景、AssetBundle含 LZMA/LZ4 等压缩等多种容器把二进制对象图还原成带层级、带引用的资产结构还能发现失效引用。分类导出。每种资产类型由专门的导出模块处理模型走网格导出Native/FBX 等、纹理走图像导出PNG/JPG 等、音频转 WAV/OGG、地形走原生 Unity 格式。导出的项目结构保持Assets/标准布局配.meta文件可以直接进 Unity 编辑器。脚本还原。Mono 后端游戏的 C# 程序集可以被反编译成带完整方法体的脚本并连同资产一起导出Il2Cpp 游戏默认导出方法骨架Level 2Premium 版提供实验性的传统反编译Level 3。项目级产出。除了散装资源还能整体导出一个可打开的 Unity 工程含 YAML 序列化资产、meta 映射这是它区别于只抠 PNG这类工具的地方——资产之间的引用关系被完整保留。批量处理。一次可以拖入多个文件甚至整目录工具内部按文件类型分派处理适合一次性处理整个游戏的资源目录。实战与技巧格式怎么选、效率怎么提按用途选导出格式。目标是导回 Unity 继续开发网格选 Native、精灵/地形保持 Unity 格式音频按需求选 WAV便于再编辑或保留 OGG。目标是编辑器外使用图像选 PNG无损、模型选 FBX 类格式、音频选 WAV。MP3 有损适合最终分发而非中间编辑。你的 Unity 编辑器版本要不低于目标游戏的 Unity 版本最好完全一致否则导出项目打开时容易出兼容问题。大批量处理的经验。大型游戏一次拖入全部文件时内存压力较大。可以按目录分批处理先场景、再资源包或者只挑关键 bundle。日志窗口是排障第一现场出错时先读最后几十行。让脚本和资产同场出现。Mono 脚本不在 AssetBundle 里而在.dll程序集中。想让提取的脚本和 bundle 资产一起导出就把相关 dll 所在的文件夹和 bundle一起拖进来日志出现Files use the Mono scripting backend.即配对成功出现Unknown说明没配对上。Il2Cpp 游戏则需要先用 Il2Cpp 逆向工具如 Cpp2IL生成程序集再导入。项目目录习惯。给每个目标游戏建一个工作目录原始文件、导出结果、配置文件分开存放重跑时结果可直接对比。进阶与增强Premium 版与实验性功能AssetRipper 有免费与 Premium 两个版本通过 Ko-fi、Buy Me a Coffee、GitHub Sponsors、PayPal 任一平台的 $10 订阅解锁Premium 主要面向让导出项目更接近原始项目的需求静态网格分离默认开启游戏编译时场景里标记为静态的物体会被合并成一个网格以省 DrawCall这个功能尝试把合并过程逆向回去跨场景重复出现的静态网格会合并为单一网格游戏文件里存在原始网格时直接复用。Prefab Outlining默认关闭编译时场景中的预制件会被实例化展开、原始信息丢失该功能通过分析全部 GameObject 层级找重复结构重新识别出可提取为预制件的片段。资产去重默认关闭多个 AssetBundle 之间共享的资产Unity 打包时往往各复制一份该功能对 MonoBehaviour 脚本、Shader、Compute Shader、音频、Text Asset、网格、无精灵纹理这几类做去重还原。着色器反编译实验性目标是覆盖所有变体并保留完整语义目前尚未打磨完部分着色器会报错或导出的代码在编辑器里编译不过。Vulkan 着色器在任何平台都能反编译DirectX 着色器只能在 Windows 上做。传统 Il2Cpp 分析实验性即 Script Content Level 3用传统反编译路线还原 Il2Cpp 编译的代码。出于性能考虑mscorlib 及名字以 System、Unity 开头的程序集被排除。目前 x86 游戏的方法级成功率大致在 10%20%其他平台更低仍在持续改进。包引用导出 / 资产路径覆盖前者导出项目对第三方包的引用避免手工修引用后者通过上传 JSON 配置文件精确控制某个资产导出到哪个路径JSON 结构见 PremiumFeatures 文档。避坑指南现象 → 原因 → 解决现象bundle 里一个 Mono 脚本都导不出来。原因脚本根本不在 bundle 里而在.dll中。 解决把 Managed 目录或相关 dll 所在文件夹和 bundle 一起拖入确认日志出现Mono而非Unknown脚本后端。现象日志报Could not add pe assembly to name dictionary!。原因Managed 目录含子目录里存在两个同名的程序集——注意是程序集名不是文件名。 解决清理重复 dll保留一份再重跑。现象程序集导入后大面积读取错误。原因用了被修改过的程序集公开化的、去掉特性的、Il2CppInterop 生成的 mod 用程序集。公开化会改变 MonoBehaviour 的字段反序列化行为去特性同理改动过方法体的会让反编译器出错。 解决换回游戏原版程序集。现象Linux 上跑着跑着报Too many open files。原因系统文件描述符上限太低。 解决同一终端先执行ulimit -n 1048576再启动 AssetRipper要永久生效则修改/etc/security/limits.conf。现象macOS 双击没反应或提示无法验证开发者。原因Gatekeeper 对未签名/未公证应用的拦截。 解决首次到 隐私与安全性 里点仍要打开之后直接双击运行。现象Il2Cpp 游戏导出的是空方法。原因这是默认行为Level 2Il2Cpp 字节码还原成本高。 解决需要真实方法体的话Premium 用户把 Script Content Level 调到 3非 Premium 用户可用 Il2Cpp 逆向工具生成程序集后以 Mono 流程导入。拆解原理架构与关键模块AssetRipper 的源码按职责分层读代码时从这些路径入手比较顺文件层Source/AssetRipper.IO.Files/统一抽象各种容器与流——BundleFiles/处理 AssetBundle、SerializedFiles/处理.assets等序列化文件、CompressedFiles/处理压缩层。上层的读取对文件格式无感知。资产模型层Source/AssetRipper.Assets/定义所有 Unity 资产的核心数据结构UnityAssetBase、UnityObjectBase等与对象引用、路径、克隆逻辑是全项目的领域模型。处理引擎层Source/AssetRipper.Processing/解析入口与主流程MainAssetProcessor.cs负责把多个文件合成一致的资产图按资产类别动画、控制器、程序集、场景、纹理等分派给各处理器。导出层Source/AssetRipper.Export/导出调度与设置Configuration/里就是界面上那些导出格式选项的落点具体资产类型拆成独立模块——模型导出含 GLB 写入、纹理导出、音频导出生成完整 Unity 工程YAML、meta 文件、PathID 映射的逻辑在 Source/AssetRipper.Export.UnityProjects/。程序集与文档层Source/AssetRipper.AssemblyDumper/ 和 Source/AssetRipper.DocExtraction/前者负责反编译与程序集重建后者负责提取 XML 文档注释拼回脚本。界面层桌面 GUI 在 Source/AssetRipper.GUI.Free/另有 Source/AssetRipper.GUI.Web/ 提供 Web 界面Pages/下按页面组织资产树、场景、Bundle、设置、搜索等。配置项在界面上的每个下拉框都能在这条链路上找到对应代码配置定义在导出模块的Configuration/序列化在 Source/AssetRipper.Configuration/界面绑定在 GUI 工程里。想改导出行为或加新格式从这条链改起。写在最后AssetRipper 的价值可以压缩成三句版本覆盖面广3.5.0 到 6000.5.X老游戏新游戏通吃、产出是可用项目而非散文件资产、引用、层级关系完整保留、跨平台且可集成GUI、Web、库三种用法。如果你是 Mod 制作者今天就先拿一个 Mono 后端的小游戏目录跑一遍完整流程如果你是开发者用它做一次自己的发布包审计看看到底打进了什么。更多细节可查 官方文档目录、常见问答 和 路线图后续计划包括脚本导入、选择性导出、资产预览增强等。需要参与开发的话克隆代码库需 .NET 10 SDK 与支持 C# 14 的 IDEgit clone https://gitcode.com/GitHub_Trending/as/AssetRipper【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表