尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

AssetRipper 上手:从 Unity 游戏文件中提取网格、贴图与脚本

AssetRipper 上手:从 Unity 游戏文件中提取网格、贴图与脚本 AssetRipper 上手从 Unity 游戏文件中提取网格、贴图与脚本【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipperAssetRipper 是一款开源的 Unity 游戏文件分析工具支持 GUI 拖拽操作也支持通过本地 Web API 调用。它能读取 AssetBundle、序列化文件和 C# 程序集把资产转换成可重新导入的 Unity 工程格式或 GLB、PNG、WAV 这类通用格式。游戏开发者拿它审查自己的构建产物逆向工程师拿它恢复资产、反编译脚本官方支持 Unity 3.5.0 到 6000.5.X 的版本范围。能力全景提取网格、贴图与音频网格导出为 Native 格式可直接在 Unity 编辑器中导入使用贴图默认导出 PNGSprite 和 Terrain 各有独立选项UV 与材质引用关系保持完整音频按内容类型嵌入导出多数类型输出 WAV部分是 OGG反编译 Mono 与 IL2Cpp 脚本Mono 游戏导出完整的方法实现IL2Cpp 游戏需先用 Cpp2IL 生成程序集AssetRipper 输出兼容接口与 dummy 方法体C# 语言版本可指定自动适配目标项目的规范要求Web 界面与本地 API启动后自动打开 127.0.0.1 的本地页面所有操作走 HTTP 端点内置 Swagger 接口文档端点可直接用于脚本化支持 headless 模式方便接入自动化流程获取与运行预编译包多数人推荐官方发布渠道提供 Windows x64/Arm64、macOS x64/Arm64、Linux x64/Arm64 的 zip 包解压即用无需构建环境。包内包含主程序、SkiaSharp 等原生依赖库和许可文件源码构建需要 .NET 10 SDK仓库锁定 net10.0。git clone https://gitcode.com/GitHub_Trending/as/AssetRipper cd AssetRipper dotnet build AssetRipper.slnx dotnet run --project Source/AssetRipper.GUI.Free容器部署仓库未自带 Dockerfile。如果要在 CI 中固化环境建议把预编译包打进自维护镜像用 headless 参数启动主程序并固定端口供流水线通过 API 调用。典型任务演示场景一从游戏包提取完整 Unity 工程收集目标文件Assets/下所有 AssetBundle加上完整Managed/目录IL2Cpp 游戏先跑 Cpp2IL 生成程序集把文件夹和 assetbundle 同时拖入 AssetRipper日志出现Files use the Mono scripting backend即识别成功首次启动的配置页里逐项指定格式网格 Native、图像 PNG、文本资产 Parse点击 Export目标选 Unity Project指定输出目录完成后得到可直接用 Unity 打开的目录顺带核对断引用日志首次启动的导出配置页把网格、音频、图像、Sprite、地形、文本资产、脚本内容级别和 C# 版本集中在一个界面里可按项目需求逐项调整场景二只导出主要资源内容按场景一加载文件Export 时选 Primary Content 而不是 Unity Project网格出 GLB、图像出 PNG、音频出 WAV输出为扁平目录适合不想开 Unity、只做归档或入库 3D 素材的流程场景三用本地 API 脚本化启动主程序记下 127.0.0.1 上的端口POST/LoadFile传入文件路径完成加载POST/Export/UnityProject或/Export/PrimaryContent触发导出完整端点清单见内置 Swagger 页面配置调优与常见坑版本支持范围官方说明不同版本支持质量略有差异Unity 版本区间状态说明3.5.0 – 5.x支持全范围内支持老版本测试覆盖较少2017 – 2022 LTS支持主流游戏版本兼容性最稳2023 – 6000.5.X支持较新游戏建议用最新版 AssetRipper常见问题按「症状 → 原因 → 解决」排查Bundle 提取后没有脚本→ Mono 脚本存在 .dll 程序集里而不是资产包内 → 把 Managed 目录整个和 bundle 一起拖入日志报Could not add pe assembly to name dictionary!→ Managed 目录或子文件夹里有两个同名程序集按程序集名而非文件名 → 定位后删除重复项MonoBehaviour 读取错误或反序列化异常→ 程序集被修改过比如 publicize 或去掉了特性 → 换回原始程序集publicize 会直接改变字段反序列化结果Linux 报Too many open files→ 系统文件句柄上限过低 → 先在同一终端执行ulimit -n 1048576再运行程序永久生效改 /etc/security/limits.conf完整清单见 常见问题文档。原理与扩展模块分层清晰AssetRipper.IO.Files负责文件读取与虚拟文件系统AssetRipper.Assets定义资产模型AssetRipper.Import做解析AssetRipper.Export产出结果AssetRipper.Processing处理场景、动画等二级加工导出分两路UnityProjects 出完整工程PrimaryContent 出主要资源二者都通过 IExportCollection 接口挂进 ExportHandler 栈扩展新导出格式 实现一个 ExportCollection 加一个 ContentExtractor不用动核心解析逻辑GUI 本身是 ASP.NET 本地 Web 应用页面操作与 HTTP 端点一一对应天然可脚本化全仓库启用 AOT 兼容并大量使用源生成器编译和运行都比较轻适用人群与选型建议适合谁游戏开发者审计构建产物里的依赖冗余、断引用和无法裁剪的脚本逆向工程师 / Mod 开发者恢复游戏资产、反编译 C# 代码流水线工程师通过本地 API 在 CI 里批量转换游戏包什么时候选它需要「资产 脚本」一起提取并重新导入 Unity 验证或者要批量处理多个游戏包时它的完整度很难被替代。什么情况不建议用只想转一张贴图或一段音频任何通用格式转换器都更轻想修改 IL2Cpp 游戏的运行时逻辑AssetRipper 只做静态分析与导出运行时改造需要别的框架目标 bundle 有加密或自定义容器时先解密再交给 AssetRipper 才有意义预编译包的具体下载入口与各版本说明可查仓库内的 下载页面。【免费下载链接】AssetRipperGUI application to analyze game files项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表