Files
UnityAI/modules/frameworks/UI窗口系统/界面拼接.md
2026-07-10 17:50:20 +08:00

3.6 KiB
Raw Permalink Blame History

UI 界面拼接

一、输入与目标

开始拼接前同时确认:

  • 设计原图、标注图或 PSD 中的尺寸、间距和层级。
  • 项目现有 Sprite、SpriteAtlas、字体、材质和可复用 Prefab。
  • 目标窗口名、Prefab 路径、Canvas 层级和脚本绑定方式。
  • 目标分辨率、SafeArea、横竖屏和滚动区域。

不能只凭截图选择近似资源。设计图中的可检查对象必须使用语义正确的现有资源;缺失资源应明确记录,不能用无关图片顶替。

二、推荐层级

WindowName
├── ImgBg
├── HeaderArea
├── ContentArea
│   ├── StaticContent
│   └── ListView
│       └── viewport
│           └── content
│               └── ItemTemplate (inactive)
├── FooterArea
└── PopupOrEffectArea
  • 按视觉和功能边界组织节点,不为每个图片增加无意义容器。
  • 节点命名应能对应脚本字段和功能,例如 Btn_CloseTxt_TitleImg_Icon
  • 复用 Item 或子面板时保持独立根节点,便于 UIMono 绑定和对象复用。
  • 全屏背景使用稳定锚点;局部模块使用明确尺寸,避免依赖编辑器当前分辨率。

三、列表选择

  • 单列或单行滚动LoopListView2。
  • 固定多列或网格LoopGridView。
  • 模板节点保持禁用尺寸、pivot 和滚动方向必须匹配。
  • 虚拟列表不依赖旧 LayoutGroup/ContentSizeFitter 运行时排版。
  • 具体初始化接口见 UI 开发指南

四、拼接流程

  1. 读取 UnityAI README 中的 UI 入口和相关指南。
  2. 检查目标 Prefab 是否已存在,导出或读取当前层级,避免覆盖有效结构。
  3. 枚举目标资源目录和图集,建立设计元素到实际资源的对应关系。
  4. 确定窗口根尺寸、锚点、主要功能区和列表类型。
  5. 使用 Unity Editor 手工拼接,或通过 MCP 的 JSON 生成工具创建基础结构。
  6. 绑定 SFUI/UIMono 组件与业务脚本,补齐交互、列表和动态数据。
  7. 刷新资源并检查 Console、Prefab 序列化结构和运行时显示。
  8. 对照原图检查尺寸、层级、颜色、字体、九宫格和点击区域。

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 的调用规则