# 配置表联动关系查看器

一个用于查看 Unity 项目中配置表联动关系的编辑器工具，支持跨项目复用。

## 功能特性

- **配置表管理**：搜索过滤、存在性检测、支持 TXT 文件
- **联动关系查看**：正向关联和反向引用查询，支持跳转到关联表
- **数据格式可视化**：自动解析 `item_id_num`、`id_lv_num` 等复合格式
- **Excel 操作**：一键打开配置表，批量打开关联表
- **导出配置**：批量导出为 JSON 和 C# 代码
- **清理空行**：自动检测并删除 Excel 中 `id` 列为空的垃圾数据行
- **智能体辅助**：支持 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 脚本，自动分析字段引用关系 |
| 刷新 | 重新加载配置文件 |

## 使用流程

### 首次配置

1. 切换到「配置」标签页
2. 设置 Excel 文件夹路径
3. 点击「生成配置」生成骨架
4. 点击「补全配置」自动分析引用关系

### 日常维护

1. 策划修改 Excel 后，点击「清理Excel空行」
2. 点击「导出配置」生成运行时数据

### 智能体辅助

当需要补充中文配置或联动关系时，可使用 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 |
| `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

```json
{
    "tables": [
        {
            "name": "hero",
            "displayName": "英雄",
            "description": "英雄基础属性配置",
            "fileExtension": ".xlsx",
            "relations": [
                {
                    "field": "skill_ids",
                    "target": "skill",
                    "targetField": "id",
                    "format": "",
                    "description": "技能ID列表"
                }
            ]
        }
    ]
}
```

### table_info.json（中文名称数据源）

```json
{
    "entries": [
        {
            "name": "hero",
            "displayName": "英雄",
            "description": "英雄基础属性配置"
        }
    ]
}
```

## 文件结构

```
Assets/Editor/ConfigLinkViewer/
├── ConfigLinkViewerWindow.cs    # 编辑器窗口界面
├── ConfigLinkDatabase.cs        # 数据管理和格式解析
├── generate_config_link_data.py # 自动分析脚本
├── ConfigLinkData.json          # 完整配置数据
├── settings.json                # 路径和格式模板配置
├── table_info.json              # 中文名/描述（共用数据源）
└── README.md                    # 使用文档
```

## 注意事项

1. Excel 文件命名必须与配置表名一致（如 `hero.xlsx`）
2. 路径设置自动保存到 `EditorUserSettings`，多项目隔离
3. 清理空行会直接修改 Excel 源文件，建议先提交版本控制
4. 补全配置需要 Python 环境
5. 编辑配置文件后点击「刷新」重新加载

## 配置文件同步规则

| 文件 | 存储内容 | 更新时机 |
|------|----------|----------|
| `table_info.json` | 中文名称、描述 | 添加新表或修改中文名时 |
| `ConfigLinkData.json` | 完整配置 + 联动关系 | 生成/补全配置、添加关联关系时 |

## 更新日志

### v2.0.1

- 优化智能体提示词，支持联动关系分析
- 修复配置表列表滚动区域高度计算问题
- 更新 Python 脚本的 AI 提示词格式

### v2.0.0 — 零依赖重构

- 移除所有 `MFrame` 直接引用，拖入即用
- 新增 `settings.json`，零代码扩展格式类型
- 新增 `table_info.json`，Python 和 C# 共用中文名数据源
- 窗口拆分为「查看」和「配置」两个标签页
- 编辑器启动时自动检测 MFrame 框架并绑定回调

### v1.0.1

- 修复 Excel 共享字符串解析问题
- 新增 `t="s"` 和 `t="inlineStr"` 单元格类型解析

### v1.0.0

- 初始版本，支持配置表列表、联动关系查看、Excel 操作

## 许可证

MIT License
