这个项目能做什么
UnityDataTools 是一个命令行工具,也是 UnityFileSystemApi 原生动态库的展示,旨在分析 Unity 数据文件(如 AssetBundle 和 Player 内容)的内容。它直接对 Unity 数据文件运行,无需 Editor,覆盖了 Unity 的 WebExtract 和 binary2text 工具的大部分功能,且性能更好,并增加了生成 SQLite 数据库以进行详细构建内容分析等能力。它被设计为可扩展以处理大型构建输出,并已被用于微调基于 Unity 的大型游戏。
该工具还分析 Unity Addressables 构建报告,自动检测并解析 Addressables JSON 构建输出,以提取有关 bundle、资源、依赖关系、文件大小和构建性能指标的信息。
安装:每个版本都附带 Windows、macOS(Apple Silicon)和 Linux 的构建版本,且为自包含形式,捆绑了可执行文件、原生 UnityFileSystemApi 库和离线文档。无需 .NET 运行时。Intel Mac 没有已发布的构建版本,必须从源代码构建。README 提供了 PowerShell 和 shell 命令来下载、解压并验证版本,并指出 checksums.txt 中包含 SHA-256 哈希值。
文档涵盖 Unity 内容格式(SerializedFiles、Unity Archives、TypeTrees、AssetBundle 格式、Player 构建格式、内容目录格式、ContentLayout.json)和工具用法(命令行参考、Analyzer、数据库模式、示例查询、AI 代理工作流、比较构建、Addressables 构建报告、构建报告)。
该仓库分为三层组织:读取 Unity 二进制格式的基础库(UnityFileSystem、UnityBinaryFormat、UnityDataModels),将原始数据转换为有用输出的功能库(用于 SQLite 数据库的 Analyzer、用于人类可读转储的 TextDumper、用于引用链的 ReferenceFinder、Archive 和 SerializedFile 检查器),以及将它们连接起来并公开 analyze、dump、find-refs、archive 和 serialized-file 等命令的 UnityDataTool 命令行可执行文件。
UnityFileSystemApi 由 Unity 源代码编译而成,公开了打开和读取 Unity Archive 和 Serialized File 格式的核心功能,包括导航 TypeTree,以便无需硬编码类型知识即可通用地读取对象。它向后兼容但不向前兼容,并且自 2022.1.0a14 起也随 Unity Editor 的 Data/Tools 文件夹一起分发。该仓库包含适用于 Windows、Mac 和 Linux 的预编译副本。
构建需要克隆仓库、安装 .NET 9.0 SDK、可选择用 Unity Editor 安装中的库替换捆绑的 UnityFileSystemApi 库,然后运行 dotnet build -c Release。包含测试和共享测试数据,并使用两个 Unity 项目(Baseline 和 LeadingEdge)重新生成测试数据。
该项目是 Francis Pagé 的 AssetBundle Analyzer 的演进版本,后者首次引入了对 Unity 构建输出的 SQLite 数据库分析,但由于依赖 WebExtract 和 binary2text 而速度慢且脆弱。UnityDataTools 和 UnityFileSystemApi 的创建旨在提供对 Unity 数据文件的快速、可靠访问。该项目按原样提供,不受 Unity 官方支持;它被描述为实验性的,欢迎提交错误报告和拉取请求,但不保证提供支持。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。