assetstudio 中文文档 下载 App

MonoBehaviour 看不了 — 缺程序集还是 Il2Cpp

现象

Asset List 里能看到 MonoBehaviour 条目,但选中后预览面板显示"Assembly not found" 或弹窗让你选程序集目录。选了之后还是报错:反序列化结果是空的、或者字段全是乱码值。

先判断是哪种 Unity 后端

解压游戏包,看 assets/bin/Data/ 目录下:

后端目录结构
Mono有 Managed/ 文件夹,里面一堆 .dll;游戏根目录或 lib/ 下有 libmono.so
IL2CPP没有 Managed/ 文件夹;有 global-metadata.dat + libil2cpp.so(或 GameAssembly.dll)

Mono 后端:找 Managed 目录

AssetStudio 第一次选中 MonoBehaviour 时弹窗让你选程序集目录——选 Managed/ 就行。Managed 目录里包含:

AssetStudio 扫描这个目录,找到 MonoBehaviour 的类型定义(字段名、字段类型、嵌套结构),然后按 TypeTree 反序列化二进制数据。

Mono 后端常见问题

IL2CPP 后端:先跑 Il2CppDumper

Il2Cpp 后端没有 Managed 目录——C# 代码提前编译成原生机器码了。AssetStudio 找不到任何 DLL,也就无法反序列化 MonoBehaviour。

完整流程:

  1. 准备两个文件:
  1. 跑 Il2CppDumper:
   Il2CppDumper.exe libil2cpp.so global-metadata.dat
  1. 拿输出的 DummyDll 目录:这是 fake DLL 包;
  2. 喂给 AssetStudio:弹窗选程序集目录时选 DummyDll。

Il2CppDumper 也是 Perfare 写的,跟 AssetStudio 配套。详细步骤见 Il2Cpp Dumper 配合 那一节。

Il2Cpp 后端常见问题

还不行?

MonoBehaviour 是 Unity 里最依赖额外条件的资源类型。如果 Managed / dummy dll 都喂对了还是解析失败:

  1. 检查 Unity 版本对不对——不同 Unity 版本 TypeTree 有差异;
  2. 游戏是 UnityCN 加密吗——加密的话 MonoBehaviour 二进制本身可能被混淆了;
  3. 游戏是最新 Unity 6 打包吗——Il2CppDumper 和 AssetStudioMod 可能都还没完全适配。