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

9.4 KiB
Raw Blame History

配置表联动关系查看器

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

功能特性

  • 配置表列表:搜索过滤、存在性检测、支持 TXT 文件
  • 联动关系查看:正向关联和反向引用查询,支持跳转到关联表
  • 数据格式可视化:自动解析 item_id_num、id_lv_num 等复合格式
  • Excel 操作:一键打开配置表,批量打开关联表
  • 导出配置:批量导出为 JSON 和 C# 代码
  • 清理空行:自动检测并删除 Excel 中 id 列为空的垃圾数据行,支持 sharedStrings 解析
  • 跨项目适配:基于 ConfigLinkData.json,一键生成骨架并由 AI 补全

安装

  1. 复制 ConfigLinkViewer 文件夹到目标项目的 Assets/Editor/
  2. 或使用 Git 子模块:
    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 格式

{
    "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.csMarkExistingTables / IsTableExistInConfigFolder 的配置路径改为从 settings.jsonconfigFolderPath 读取
  • ConfigLinkViewerWindow.cs — Python 调用侧同步传入 --config-dir--table-info 参数
  • generate_config_link_data.py — 移除硬编码 TABLE_INFO 字典,改为从 table_info.json 加载
  • 清理 __pycache__/ 缓存目录和已完成的优化方案文档

许可证

MIT License