3.6 KiB
3.6 KiB
UI 界面拼接
一、输入与目标
开始拼接前同时确认:
- 设计原图、标注图或 PSD 中的尺寸、间距和层级。
- 项目现有 Sprite、SpriteAtlas、字体、材质和可复用 Prefab。
- 目标窗口名、Prefab 路径、Canvas 层级和脚本绑定方式。
- 目标分辨率、SafeArea、横竖屏和滚动区域。
不能只凭截图选择近似资源。设计图中的可检查对象必须使用语义正确的现有资源;缺失资源应明确记录,不能用无关图片顶替。
二、推荐层级
WindowName
├── ImgBg
├── HeaderArea
├── ContentArea
│ ├── StaticContent
│ └── ListView
│ └── viewport
│ └── content
│ └── ItemTemplate (inactive)
├── FooterArea
└── PopupOrEffectArea
- 按视觉和功能边界组织节点,不为每个图片增加无意义容器。
- 节点命名应能对应脚本字段和功能,例如
Btn_Close、Txt_Title、Img_Icon。 - 复用 Item 或子面板时保持独立根节点,便于 UIMono 绑定和对象复用。
- 全屏背景使用稳定锚点;局部模块使用明确尺寸,避免依赖编辑器当前分辨率。
三、列表选择
- 单列或单行滚动:LoopListView2。
- 固定多列或网格:LoopGridView。
- 模板节点保持禁用,尺寸、pivot 和滚动方向必须匹配。
- 虚拟列表不依赖旧 LayoutGroup/ContentSizeFitter 运行时排版。
- 具体初始化接口见 UI 开发指南。
四、拼接流程
- 读取 UnityAI README 中的 UI 入口和相关指南。
- 检查目标 Prefab 是否已存在,导出或读取当前层级,避免覆盖有效结构。
- 枚举目标资源目录和图集,建立设计元素到实际资源的对应关系。
- 确定窗口根尺寸、锚点、主要功能区和列表类型。
- 使用 Unity Editor 手工拼接,或通过 MCP 的 JSON 生成工具创建基础结构。
- 绑定 SFUI/UIMono 组件与业务脚本,补齐交互、列表和动态数据。
- 刷新资源并检查 Console、Prefab 序列化结构和运行时显示。
- 对照原图检查尺寸、层级、颜色、字体、九宫格和点击区域。
JSON 生成适合批量创建稳定层级和组件,不代替视觉校对、业务绑定和运行时验证。
五、修改已有 Prefab
- 先读取现有 Prefab 和脚本引用,再调整层级或组件。
- 移动、重命名节点前搜索
FindUICtrlByName、序列化字段和生成绑定代码。 - 只修改目标节点,避免让 Unity 重序列化无关 Prefab。
- 组件勾选状态属于 Prefab 行为的一部分;修复显示问题时同时检查
enabled与 GameObject active。 - 列表迁移后,旧布局组件可保留序列化参数作为参考,但运行时由新列表包装关闭。
六、验收
- Prefab 路径和窗口 attribute 一致。
- Sprite、字体、材质和图集引用有效。
- 锚点、pivot、sizeDelta 和层级与设计目标一致。
- 按钮、文本、列表、进度和弹窗交互正确。
- 空数据、极长文本、不同分辨率和重复打开不破版。
- Unity Console 无本次新增 Error,运行时实际显示通过确认。
文档关联
| 文档 | 关联原因 |
|---|---|
| UI 窗口系统 | 窗口框架和资源路径 |
| UI 开发指南 | 生命周期和虚拟列表接口 |
| UI 拼接工具 | MCP JSON/Prefab 工具 |
| MCP 使用规则 | Codex 与 Unity 的调用规则 |