Files
UnityAI/03_核心功能/UI/UI界面拼接设计指南.md

6.1 KiB
Raw Blame History

UI界面拼接设计指南

一、界面结构设计原则

1.1 模块化拆分

将界面按功能划分为独立模块:

模块类型 功能定位 示例
信息展示区 显示玩家状态、资源等静态信息 顶部信息栏、左侧状态栏
功能入口区 提供功能按钮入口 中央功能区、底部快捷栏
交互面板区 可展开/收起的功能面板 右侧功能面板、顶部按钮区
输入输出区 用户输入和系统反馈 聊天输入框、提示信息

1.2 经典布局模式

┌─────────────────────────────────────────────────────┐
│  TopArea          (信息展示 + 可收起功能按钮)        │
├──────────┬───────────────────────┬──────────────────┤
│  Left    │                       │  Right           │
│  Area    │     CenterArea        │  Area            │
│ (状态)   │   (核心功能入口)       │ (功能面板)       │
│          │                       │                  │
├──────────┴───────────────────────┴──────────────────┤
│  BottomArea       (快捷功能 + 状态信息 + 输入)       │
└─────────────────────────────────────────────────────┘

二、组件拆分方法

2.1 基础组件识别

组件类型 识别特征 处理方式
按钮 可点击、有交互反馈 使用 SFUI_Button
文本 静态/动态文字显示 使用 SFUI_TextMeshProUGUI
图片 图标、背景图 使用 SFUI_Image
进度条 HP、MP、经验等 使用 SFUI_Slider
列表 可滚动的项目列表 使用 SFUI_ScrollRect

2.2 复合组件封装

将功能相关的基础组件组合为复合组件,便于复用和维护:

设计原则

  • 将同一功能模块的组件封装在一起(如玩家头像+血条+蓝条)
  • 提供统一的数据设置接口
  • 保持组件之间的逻辑独立性

三、预制体层级规范

3.1 标准层级结构

WindowName (RectTransform)
├── ModuleName (RectTransform)           # 模块容器
│   ├── ComponentName (SFUI_*)           # 功能组件
│   ├── SubModule (RectTransform)        # 子模块
│   └── CollapsibleArea (RectTransform)  # 可收起区域
└── BtnCollapse (SFUI_Button)            # 收起控制按钮

3.2 命名规范

类型 命名规则 示例
模块容器 PascalCase + Area TopArea
功能组件 PascalCase BtnCollapseTop
可收起区域 PascalCase + FuncArea TopFuncArea
状态变量 m_ + PascalCase m_IsTopCollapsed

四、收起/展开功能设计

4.1 功能定义

按钮 控制区域 用途
BtnCollapseTop 顶部功能按钮区 收起/展开顶部按钮群
BtnCollapseRight 右侧功能面板区 收起/展开右侧功能面板

4.2 设计要点

状态管理:每个可收起区域需要一个布尔状态变量来记录当前收起/展开状态。

交互逻辑

  1. 点击收起按钮时,切换对应区域的显示/隐藏状态
  2. 同时切换按钮图标(收起时显示展开图标,展开时显示收起图标)

布局要求

  • 收起按钮应放置在对应区域的边缘位置,便于用户找到
  • 收起区域内的所有元素应作为一个整体进行显示/隐藏控制
  • 收起状态应在窗口生命周期内保持记忆

五、实际案例:主界面拼接

5.1 模块化设计思想

核心原则:将界面按功能边界划分为独立模块,模块内可嵌套子模块。

模块归类方法

  1. 一级模块:按空间位置划分(顶部、左侧、中央、右侧、底部)
  2. 二级模块:按功能类型划分(信息展示区、功能按钮区、输入输出区)
  3. 三级模块:按具体功能划分(玩家头像、资源显示、功能按钮群)

层级关系示例

Window
├── TopArea (一级:位置)
│   ├── InfoPanel (二级:信息展示)
│   │   └── TxtWelcome (三级:具体组件)
│   └── FuncButtons (二级:功能按钮)
│       └── BtnUpload (三级:具体按钮)
└── LeftArea (一级:位置)
    └── PlayerPortrait (二级:复合组件)
        ├── ImgAvatar (三级:头像)
        └── BarHP (三级:血条)

设计要点

  • 同一功能域内的元素归为同一模块(如头像、血条、蓝条归为玩家状态模块)
  • 独立交互功能作为独立模块(如收起按钮单独作为控制模块)
  • 可收起区域作为独立子模块,便于统一控制显示/隐藏

六、界面拼接流程

6.1 设计阶段

  1. 需求分析:明确界面功能和交互需求
  2. 模块划分:将界面拆分为独立功能模块
  3. 层级设计:设计预制体层级结构

6.2 开发阶段

  1. 组件创建:创建基础组件和复合组件
  2. 预制体搭建:按层级结构搭建预制体
  3. 脚本编写:实现交互逻辑和收起/展开功能

6.3 测试阶段

  1. 功能测试:验证所有按钮和交互功能
  2. 收起测试:测试收起/展开功能正常工作
  3. 适配测试:验证不同分辨率下的显示效果

七、注意事项

  1. 组件复用:相同功能的组件尽量复用,减少冗余
  2. 状态管理:收起状态需要正确保存和恢复
  3. 图标反馈:收起按钮图标应随状态变化
  4. 性能优化:可收起区域使用 SetActive 而非销毁重建
  5. 命名规范:统一的命名规则便于维护和查找

版本: v1.0
适用: StrayFog框架UI拼接开发人员