3.7 KiB
3.7 KiB
UI 拼接工具
目的
UI 拼接工具通过 JSON 与 Unity Prefab 双向转换,帮助 Codex 和开发人员创建基础 UI 层级、检查现有 Prefab,并继续在 Unity 中完成业务绑定和视觉校对。
当前实现
| 组件 | 位置 | 职责 |
|---|---|---|
UIPrefabGenerator |
Assets/Editor/Command/UIPrefabGenerator.cs |
读取 UI JSON 并生成 Prefab |
UIPrefabToJson |
Assets/Editor/Command/UIPrefabToJson.cs |
导出 Prefab 的层级和组件数据 |
| Unity Bridge | Assets/Editor/Command/CodexUnityEditorBridge.cs |
在 Unity 主线程执行生成和导出命令 |
| MCP Server | UnityAI/Tools/CodexUnityMcp/ |
把 Unity Bridge 命令暴露给 Codex |
当前外部入口是 MCP Bridge,不使用文件监听或文本触发命令。
数据结构
根节点使用 UILayoutData:
{
"name": "ExampleWindow",
"type": "Canvas",
"layer": 5,
"rectTransform": {
"anchorMin": [0.5, 0.5],
"anchorMax": [0.5, 0.5],
"position": [0, 0, 0],
"sizeDelta": [1080, 1920],
"pivot": [0.5, 0.5],
"localScale": [1, 1, 1],
"localRotation": [0, 0, 0]
},
"children": []
}
子节点使用 UIElementData,可配置 rectTransform、image、button、text、layoutGroup、scrollRect、toggle、slider、inputField、customComponents 和递归 children。
支持组件
Image/SFUI_ImageButton/SFUI_ButtonTextMeshProUGUI/SFUI_TextMeshProUGUIRectTransform、Canvas、CanvasScaler、GraphicRaycasterScrollRect/SFUI_ScrollRectSFUI_Viewport、SFUI_Content、SFUI_ListViewItemGridLayoutGroup、VerticalLayoutGroup、HorizontalLayoutGroupToggle/SFUI_ToggleSlider/SFUI_SliderInputField/SFUI_InputField
资源字段使用 Unity Asset 路径,例如 Assets/Game/...,路径分隔符统一使用 /。
MCP 调用
生成 Prefab:
unity_generate_ui_prefab(jsonPath, prefabPath)
导出 Prefab:
unity_export_prefab_to_json(prefabPath, jsonPath)
路径由当前任务明确传入,不规定固定测试目录或中间数据目录。目标正式窗口通常位于:
Assets/Game/GameHFResource/<语言>/UIWindows/<WindowName>/<WindowName>.prefab
标准流程
- 先读 UI 界面拼接 和 UI 开发指南。
- 调用
unity_health确认 Unity 项目和版本。 - 检查目标 Prefab、窗口脚本和可用资源。
- 生成基础 Prefab,或先导出现有 Prefab 再调整 JSON。
- 调用
unity_refresh_assets。 - 调用
unity_get_console_logs检查 Error 和关键 Warning。 - 在 Unity 中检查层级、RectTransform、组件、资源引用和实际显示。
工具生成成功只表示 Prefab 文件已创建,不表示 UI 已完成。业务脚本、列表初始化、字体、图集、点击区域和视觉结果仍需验证。
安全规则
- 覆盖已有 Prefab 前确认目标路径和现有内容。
- 不通过 UI 生成工具批量删除、移动资源或执行构建发布。
- Unity API 必须由 Bridge 排队到 Editor 主线程执行。
- 生成后检查 Git 差异,避免无意义重序列化其他资源。
- JSON 递归结构出现 serialization depth warning 时检查实际生成结果;新增 Error 必须处理。
文档关联
| 文档 | 关联原因 |
|---|---|
| 编辑器工具入口 | 编辑器工具模块入口 |
| UI 窗口系统 | 窗口框架和资源路径 |
| UI 界面拼接 | 视觉与 Prefab 流程 |
| MCP 使用规则 | Codex 调用和安全边界 |