Classes 类结构标签页 — 按 Unity 版本分组的 TypeTree 查看器
Classes 标签页是什么
AssetStudio 的第三个左侧标签页是 Classes——它不是资源列表的一部分,而是一个 Unity 类型结构浏览器。面板里按 Unity 版本分组展示所有内置类型(Class ID + 类型名),选中一个就能看到它的完整 TypeTree。
为什么要看 TypeTree
Unity 引擎把序列化的资源数据按 TypeTree 定义的字段布局写入文件。TypeTree 相当于每个类的"内存布局说明书"——它告诉你这个类有哪些字段、每个字段什么类型、在内存里什么偏移量、什么数组长度、对齐方式等。
AssetStudio 自己也是靠 TypeTree 来解析资源的:当它加载一个 .assets 或 AssetBundle 时,会先从文件里读取 TypeTree,然后按每个类的定义去反序列化二进制数据。
所以如果你要:
- 研究 Unity 资源格式;
- 写自己的 Unity 资源解析器;
- 排查 AssetStudio 解析某资源时出错的原因;
- 理解某个自定义 MonoBehaviour 的字段布局;
Classes 标签页就是最直接的参考工具。
怎么看
左侧树按 Unity 版本分组,每个版本节点下按 Class ID 排序列出所有类型。Class ID 是 Unity 内部的类型编号——比如 Texture2D 是 28,Mesh 是 43,MonoBehaviour 是 114。
选中一个类型后,右侧 Dump 标签页会渲染它的完整 TypeTree,类似:
Texture2D
├─ m_Name: string
├─ m_ClassID: int32
├─ m_EngineClassString: string
├─ m_NativeFormatID: int32
├─ m_TextureSettings
│ ├─ m_FilterMode: int32
│ ├─ m_aniso: int32
│ ├─ m_mipBias: float32
│ └─ m_wrapU / m_wrapV: int32
├─ m_Width / m_Height: int32
├─ m_TextureFormat: int32
├─ m_mipCount: int32
├─ m_isReadable: bool
├─ m_imageData: Array<uint8>
└─ m_DeferredTextureImageData: ...
TypeTree 还会告诉你字段的 version(Unity 版本兼容性)、depth(嵌套层级)、size(字节大小)、flags(序列化属性,比如 align 表示对齐填充)等。
与 Dump 功能的配合
Asset List 的右键菜单里 Dump Selected Assets 会把选中的资源按它自己的 TypeTree 序列化成 JSON 格式,在右侧 Dump 面板里显示出来。这时候左边 Classes 标签页能帮你理解每个字段名对应的含义——比如 m_Width 和 m_Height 就是贴图的宽高,m_imageData 是压缩后的原始像素数据。