Files
Planner_Tools/Unity/配置表联动查看器/README.md
2026-06-02 14:11:28 +08:00

215 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 配置表联动关系查看器
一个用于查看 Unity 项目中配置表联动关系的编辑器工具,支持跨项目复用。
## 功能特性
- **配置表列表**:搜索过滤、存在性检测、支持 TXT 文件
- **联动关系查看**:正向关联和反向引用查询,支持跳转到关联表
- **数据格式可视化**:自动解析 item_id_num、id_lv_num 等复合格式
- **Excel 操作**:一键打开配置表,批量打开关联表
- **导出配置**:批量导出为 JSON 和 C# 代码
- **清理空行**:自动检测并删除 Excel 中 id 列为空的垃圾数据行,支持 sharedStrings 解析
- **跨项目适配**:基于 `ConfigLinkData.json`,一键生成骨架并由 AI 补全
## 安装
1. 复制 `ConfigLinkViewer` 文件夹到目标项目的 `Assets/Editor/`
2. 或使用 Git 子模块:
```bash
git submodule add <repository-url> Assets/Editor/ConfigLinkViewer
```
## 快速上手
Unity 编辑器菜单:`Tools → 配置表联动查看器`
### 按钮说明
**日常数据维护:**
| 按钮 | 说明 |
|------|------|
| 清理Excel空行 | 扫描 Excel 文件夹,删除 id 列为空或非数字的垃圾数据行 |
| 导出配置 | 将 Excel 批量导出为游戏运行时的 JSON 和 C# 代码 |
| 打开表格 | 打开当前选中表的 Excel 文件 |
| 批量打开关联表 | 打开所有关联的配置表 |
**查看器配置(首次使用或跨项目时):**
| 按钮 | 说明 |
|------|------|
| 生成配置 | 从 Excel 文件夹扫描生成 `ConfigLinkData.json` 骨架文件(仅表名) |
| 补全配置 | 运行 Python 脚本自动识别字段引用关系,补全 `ConfigLinkData.json` |
| 刷新 | 重新加载 `ConfigLinkData.json` |
| 显示反向引用 | 查看哪些表引用了当前选中的表 |
## 使用流程
### 流程一:首次配置 / 跨项目使用
将本工具引入新项目时,需要初始化 `ConfigLinkData.json`
1. 点击"选择文件夹",设置 Excel 文件夹路径
2. 点击 **"生成配置"** — 扫描 Excel 文件夹,生成骨架(只有表名,没有引用关系)
3. 点击 **"补全配置"** — 运行 Python 脚本自动分析 config JSON补全引用关系和中文名
4. 在左侧列表点击表名,查看联动关系是否准确
5. 如有遗漏或不准确,手动编辑 `ConfigLinkData.json` 后点击"刷新"
### 流程二:日常数据维护
策划修改 Excel 后,需要导出给程序使用:
1. 点击 **"清理Excel空行"** — 清除 Excel 中 id 列为空的垃圾行
2. 点击 **"导出配置"** — 将 Excel 批量导出为 JSON 和 C# 代码
### 流程三:查看联动关系
在左侧列表选中一张表,右侧面板会显示:
- 正向关联:该表引用了哪些其他表
- 反向引用(勾选"显示反向引用"):哪些表引用了该表
- 数据格式示例和说明
## 数据格式说明
| 格式 | 示例 | 说明 |
|------|------|------|
| item_id_num | 1001_10_5 | 类型:1001, ID:10, 数量:5 |
| type_id_num | 1001_10_5 | 类型:1001, ID:10, 数量:5 |
| id_pos_lv | 100_1_30 | ID:100, 位置:1, 等级:30 |
| id_lv_num | 100_30_5 | ID:100, 等级:30, 数量:5 |
| id_lv_num_time | 100_30_5_120 | ID:100, 等级:30, 数量:5, 时间:120秒 |
| buffid_lv | 5_3 | BuffID:5, 等级:3 |
| rune_id_num | 10_2 | 符文ID:10, 数量:2 |
| equip_id_num | 20_1 | 装备ID:20, 数量:1 |
## ConfigLinkData.json 格式
```json
{
"tables": [
{
"name": "item",
"displayName": "道具表",
"description": "道具基础配置",
"fileExtension": ".xlsx",
"relations": [
{
"field": "rewards",
"target": "monster",
"targetField": "id",
"format": "type_id_num",
"description": "掉落奖励"
}
]
}
]
}
```
| 字段 | 必填 | 说明 |
|------|------|------|
| name | 是 | 表名(对应 Excel 文件名,不含扩展名) |
| displayName | 否 | 显示名称,不填则用 name |
| description | 否 | 表描述 |
| fileExtension | 否 | 文件扩展名,默认 `.xlsx`,可设为 `.txt` |
| relations | 否 | 联动关系列表 |
**relations 字段:**
| 字段 | 必填 | 说明 |
|------|------|------|
| field | 是 | 当前表的字段名 |
| target | 是 | 引用的目标表名 |
| targetField | 否 | 目标表的字段名,默认 `id` |
| format | 否 | 数据格式,如 `type_id_num` |
| description | 否 | 关系描述 |
## 文件结构
```
Assets/Editor/ConfigLinkViewer/
├── ConfigLinkViewerWindow.cs # Unity 编辑器窗口界面 + 回调注册容器
├── ConfigLinkDatabase.cs # 配置表数据、路径管理、格式模板(数据驱动)
├── generate_config_link_data.py # Python 脚本,支持命令行参数,自动识别字段引用关系
├── ConfigLinkData.json # 配置文件(生成骨架后由 AI 补全)
├── settings.json # 项目路径 + 格式模板配置(零代码扩展)
├── table_info.json # 配置表中文名/描述Python 和 C# 共用)
└── README.md # 使用文档
```
## 注意事项
1. Excel 文件命名必须与配置表名一致(如 `enemy.xlsx`
2. 路径设置后自动保存到 EditorUserSettings多项目隔离互不覆盖
3. 清理空行会直接修改 Excel 源文件,建议操作前确认已提交到版本控制
4. 清理空行支持 Excel 共享字符串sharedStrings解析可正确处理 `t="s"` 类型单元格
5. 补全配置功能需要 Python 环境,脚本位于 `generate_config_link_data.py`
6. 编辑 `ConfigLinkData.json` 后点击"刷新"按钮重新加载
## 更新日志
### v1.0.0
- 配置表列表展示,支持搜索过滤和存在性检测
- 联动关系查看,支持正向关联和反向引用查询
- 数据格式可视化,自动解析并显示格式示例
- 支持 TXT 文件识别
- 左右面板自适应布局,窗口默认 900×600
- 一键打开 Excel 文件,支持批量打开关联表
- Excel 文件夹路径设置,自动保存到 PlayerPrefs
- 跨项目适配,点击[生成配置]扫描 Excel 文件夹生成骨架AI 补全中文名和关联关系
- "导出配置"按钮,一键将 Excel 批量导出为 JSON 和 C# 代码
- "清理Excel空行"功能,自动检测并删除 Excel 中 id 列为空的垃圾数据行
- "AI补全配置"按钮,运行 Python 脚本自动识别字段引用关系
### v1.0.1
- "AI补全配置"按钮更名为"补全配置",按钮宽度和提示文案同步调整
- 修复清理 Excel 空行时未正确解析共享字符串sharedStrings导致部分空行清理不干净的问题
- 新增 `t="s"`(共享字符串引用)和 `t="inlineStr"`(内联字符串)两种单元格类型解析
- 提取 `GetCellActualValue()` 方法,统一单元格值解析逻辑
- README 全面优化:精简功能特性描述、重组文档结构、新增查漏补缺指南和二次校验 Prompt
### v2.0.1
**UI 优化:**
- 调整 ASCII 艺术画样式,支持自定义图案替换
- 优化艺术画显示尺寸,支持更宽更矮的布局
- 修复文字颜色显示问题,确保 ASCII 艺术画正确渲染
### v2.0.0 — 零依赖重构(大版本)
**核心目标:** 拖入任意 Unity 项目即用,零外部依赖,配置驱动。
**破坏性变更:**
- 移除所有 `MFrame` 直接引用,编译不再依赖任何外部框架
- Excel 路径存储从 `PlayerPrefs` 迁移至 `EditorUserSettings`(自动多项目隔离,旧路径需重新设置)
- Python 脚本入口改为 `argparse` 参数化调用(`--config-dir` / `--output` / `--table-info`
**新增文件:**
- `settings.json` — 项目路径 + 格式模板配置,新增格式类型只需改 JSON重启即生效
- `table_info.json` — 78 张配置表的中文名/描述Python 和 C# 共用同一份数据源
**UI 重构:**
- 窗口拆分为「查看」和「配置」两个标签页,日常操作和初始化设置分离
- 「查看」页顶部精简为 3 个按钮清理Excel空行、导出配置、刷新按钮大小和垂直对齐统一
- 「配置」页集中展示路径设置、Excel 文件夹、配置数据生成(生成/补全)
- 配置标签页底部展示洛天依 ASCII 彩蛋
**框架自动适配:**
- 新增 `ConfigLinkViewerAutoSetup``[InitializeOnLoad]`),编辑器启动时通过**反射**自动检测项目中的 MFrame 框架
- 检测到 `MFrame.ConfigDeal.ExportConfig` → 自动绑定「导出配置」回调
- 检测到 `MFrame.PathConf` + `MFrame.ConfigEditorCf` → 自动绑定 Excel 路径回退
- 未检测到框架 → 静默跳过,用户无需任何配置,路径通过 UI 手动设置即可
**改动详情:**
- `ConfigLinkViewerCallbacks` 静态回调类保留,支持外部手动注册覆盖自动检测结果
- `ConfigLinkDatabase.cs` — 格式解析从 switch-case 改为反射加载 `settings.json` 中的 `FormatTemplatesWrapper`,零代码扩展
- `ConfigLinkDatabase.cs` — `MarkExistingTables` / `IsTableExistInConfigFolder` 的配置路径改为从 `settings.json` 的 `configFolderPath` 读取
- `ConfigLinkViewerWindow.cs` — Python 调用侧同步传入 `--config-dir` 和 `--table-info` 参数
- `generate_config_link_data.py` — 移除硬编码 `TABLE_INFO` 字典,改为从 `table_info.json` 加载
- 清理 `__pycache__/` 缓存目录和已完成的优化方案文档
## 许可证
MIT License