提交修改

This commit is contained in:
ShallowT1Dream
2026-06-04 14:28:46 +08:00
parent d4fbef751a
commit 3071ec4b8f
5 changed files with 185 additions and 132 deletions

View File

@@ -4,13 +4,13 @@
## 功能特性
- **配置表列表**:搜索过滤、存在性检测、支持 TXT 文件
- **配置表管理**:搜索过滤、存在性检测、支持 TXT 文件
- **联动关系查看**:正向关联和反向引用查询,支持跳转到关联表
- **数据格式可视化**:自动解析 item_id_numid_lv_num 等复合格式
- **数据格式可视化**:自动解析 `item_id_num``id_lv_num` 等复合格式
- **Excel 操作**:一键打开配置表,批量打开关联表
- **导出配置**:批量导出为 JSON 和 C# 代码
- **清理空行**:自动检测并删除 Excel 中 id 列为空的垃圾数据行,支持 sharedStrings 解析
- **跨项目适配**:基于 `ConfigLinkData.json`,一键生成骨架并由 AI 补全
- **清理空行**:自动检测并删除 Excel 中 `id` 列为空的垃圾数据行
- **智能体辅助**:支持 AI 智能体高效维护配置文件
## 安装
@@ -24,82 +24,97 @@
Unity 编辑器菜单:`Tools → 配置表联动查看器`
### 界面布局
| 区域 | 功能 |
|------|------|
| 左侧面板 | 配置表列表,支持搜索过滤 |
| 右侧面板 | 当前表详情、联动关系、数据格式示例 |
| 顶部按钮 | 日常操作(清理空行、导出配置、刷新) |
| 配置标签页 | 路径设置、配置生成、智能体辅助 |
### 按钮说明
**日常数据维护**
**日常操作**
| 按钮 | 说明 |
|------|------|
| 清理Excel空行 | 扫描 Excel 文件夹,删除 id 列为空或非数字的垃圾数据行 |
| 导出配置 | 将 Excel 批量导出为游戏运行时的 JSON 和 C# 代码 |
| 清理Excel空行 | 删除 Excel 中 `id` 列为空或非数字的行 |
| 导出配置 | 将 Excel 批量导出为 JSON 和 C# 代码 |
| 打开表格 | 打开当前选中表的 Excel 文件 |
| 批量打开关联表 | 打开所有关联的配置表 |
**查看器配置(首次使用或跨项目时)**
**配置操作**
| 按钮 | 说明 |
|------|------|
| 生成配置 | Excel 文件夹扫描生成 `ConfigLinkData.json` 骨架文件(仅表名) |
| 补全配置 | 运行 Python 脚本自动识别字段引用关系,补全 `ConfigLinkData.json` |
| 刷新 | 重新加载 `ConfigLinkData.json` |
| 显示反向引用 | 查看哪些表引用了当前选中的表 |
| 生成配置 | 扫描 Excel 文件夹生成 `ConfigLinkData.json` 骨架 |
| 补全配置 | 运行 Python 脚本自动分析字段引用关系 |
| 刷新 | 重新加载配置文件 |
## 使用流程
### 流程一:首次配置 / 跨项目使用
### 首次配置
将本工具引入新项目时,需要初始化 `ConfigLinkData.json`
1. 切换到「配置」标签页
2. 设置 Excel 文件夹路径
3. 点击「生成配置」生成骨架
4. 点击「补全配置」自动分析引用关系
1. 点击"选择文件夹",设置 Excel 文件夹路径
2. 点击 **"生成配置"** — 扫描 Excel 文件夹,生成骨架(只有表名,没有引用关系)
3. 点击 **"补全配置"** — 运行 Python 脚本自动分析 config JSON补全引用关系和中文名
4. 在左侧列表点击表名,查看联动关系是否准确
5. 如有遗漏或不准确,手动编辑 `ConfigLinkData.json` 后点击"刷新"
### 日常维护
### 流程二:日常数据维护
1. 策划修改 Excel 后点击「清理Excel空行」
2. 点击「导出配置」生成运行时数据
策划修改 Excel 后,需要导出给程序使用:
### 智能体辅助
1. 点击 **"清理Excel空行"** — 清除 Excel 中 id 列为空的垃圾行
2. 点击 **"导出配置"** — 将 Excel 批量导出为 JSON 和 C# 代码
当需要补充中文配置或联动关系时,可使用 AI 智能体:
### 流程三:查看联动关系
**推荐提示词模板:**
在左侧列表选中一张表,右侧面板会显示:
- 正向关联:该表引用了哪些其他表
- 反向引用(勾选"显示反向引用"):哪些表引用了该表
- 数据格式示例和说明
```plaintext
请帮我维护配置表联动查看器的配置文件:
- 目录d:\Project\Unity\YY9\YY9_game\unity\Assets\Editor\ConfigLinkViewer\
- 补充缺失的中文名称和描述
- 添加未识别的字段引用关系
- 同时更新 table_info.json 和 ConfigLinkData.json
```
**常见场景:**
| 场景 | 操作 |
|------|------|
| 添加新表 | 在两份文件中添加 displayName 和 description |
| 添加关联 | 在 ConfigLinkData.json 的 relations 中添加 |
| 同步配置 | 将 ConfigLinkData.json 的中文配置同步到 table_info.json |
## 数据格式说明
| 格式 | 示例 | 说明 |
|------|------|------|
| 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 |
| `item_id_num` | `1001_10_5` | 类型:1001, ID:10, 数量:5 |
| `id_lv_num` | `100_30_5` | ID:100, 等级:30, 数量:5 |
| `id_lv_count_delay` | `100_30_5_120` | ID:100, 等级:30, 数量:5, 时间:120秒 |
## ConfigLinkData.json 格式
## 配置文件格式
### ConfigLinkData.json
```json
{
"tables": [
{
"name": "item",
"displayName": "道具表",
"description": "道具基础配置",
"name": "hero",
"displayName": "英雄",
"description": "英雄基础属性配置",
"fileExtension": ".xlsx",
"relations": [
{
"field": "rewards",
"target": "monster",
"field": "skill_ids",
"target": "skill",
"targetField": "id",
"format": "type_id_num",
"description": "掉落奖励"
"format": "",
"description": "技能ID列表"
}
]
}
@@ -107,107 +122,72 @@ Unity 编辑器菜单:`Tools → 配置表联动查看器`
}
```
| 字段 | 必填 | 说明 |
|------|------|------|
| name | 是 | 表名(对应 Excel 文件名,不含扩展名) |
| displayName | 否 | 显示名称,不填则用 name |
| description | 否 | 表描述 |
| fileExtension | 否 | 文件扩展名,默认 `.xlsx`,可设为 `.txt` |
| relations | 否 | 联动关系列表 |
### table_info.json中文名称数据源
**relations 字段:**
| 字段 | 必填 | 说明 |
|------|------|------|
| field | 是 | 当前表的字段名 |
| target | 是 | 引用的目标表名 |
| targetField | 否 | 目标表的字段名,默认 `id` |
| format | 否 | 数据格式,如 `type_id_num` |
| description | 否 | 关系描述 |
```json
{
"entries": [
{
"name": "hero",
"displayName": "英雄",
"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 # 使用文档
├── ConfigLinkViewerWindow.cs # 编辑器窗口界面
├── ConfigLinkDatabase.cs # 数据管理格式解析
├── generate_config_link_data.py # 自动分析脚本
├── ConfigLinkData.json # 完整配置数据
├── settings.json # 路径和格式模板配置
├── table_info.json # 中文名/描述(共用数据源
└── 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` 后点击"刷新"按钮重新加载
1. Excel 文件命名必须与配置表名一致(如 `hero.xlsx`
2. 路径设置自动保存到 `EditorUserSettings`多项目隔离
3. 清理空行会直接修改 Excel 源文件,建议提交版本控制
4. 补全配置需要 Python 环境
5. 编辑配置文件后点击「刷新」重新加载
## 配置文件同步规则
| 文件 | 存储内容 | 更新时机 |
|------|----------|----------|
| `table_info.json` | 中文名称、描述 | 添加新表或修改中文名时 |
| `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 艺术画正确渲染
- 优化智能体提示词,支持联动关系分析
- 修复配置表列表滚动区域高度计算问题
- 更新 Python 脚本的 AI 提示词格式
### v2.0.0 — 零依赖重构(大版本)
### v2.0.0 — 零依赖重构
**核心目标:** 拖入任意 Unity 项目即用,零外部依赖,配置驱动。
- 移除所有 `MFrame` 直接引用,拖入即用
- 新增 `settings.json`,零代码扩展格式类型
- 新增 `table_info.json`Python 和 C# 共用中文名数据源
- 窗口拆分为「查看」和「配置」两个标签页
- 编辑器启动时自动检测 MFrame 框架并绑定回调
**破坏性变更:**
- 移除所有 `MFrame` 直接引用,编译不再依赖任何外部框架
- Excel 路径存储从 `PlayerPrefs` 迁移至 `EditorUserSettings`(自动多项目隔离,旧路径需重新设置)
- Python 脚本入口改为 `argparse` 参数化调用(`--config-dir` / `--output` / `--table-info`
### v1.0.1
**新增文件:**
- `settings.json` — 项目路径 + 格式模板配置,新增格式类型只需改 JSON重启即生效
- `table_info.json` — 78 张配置表的中文名/描述Python 和 C# 共用同一份数据源
- 修复 Excel 共享字符串解析问题
- 新增 `t="s"` 和 `t="inlineStr"` 单元格类型解析
**UI 重构:**
- 窗口拆分为「查看」和「配置」两个标签页,日常操作和初始化设置分离
- 「查看」页顶部精简为 3 个按钮清理Excel空行、导出配置、刷新按钮大小和垂直对齐统一
- 「配置」页集中展示路径设置、Excel 文件夹、配置数据生成(生成/补全)
- 配置标签页底部展示洛天依 ASCII 彩蛋
### v1.0.0
**框架自动适配:**
- 新增 `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__/` 缓存目录和已完成的优化方案文档
- 初始版本支持配置表列表、联动关系查看、Excel 操作
## 许可证