13 KiB
13 KiB
Unity UI 组件设计原则
本文档依据视觉基准图
Doc/Design/ui_design.jpg提炼,定义本项目休闲卡通风格 UI 的统一设计语言与各类 UGUI 控件的设计规范。 配套规范见Client/Assets/Doc/Rule/UnityProject.md(制作流程、JSON→Prefab 管线)与Doc/Design/UI_Pic_Set.md(通用控件切图清单)。 通用控件切图位于Assets/Game/Art/UI/Texture/Common。
1. 总体视觉风格
休闲、友好、明快的卡通糖果风(casual candy style),强调“圆润、厚实、有光泽、易读”:
- 圆角厚实:所有容器、按钮、控件均为大圆角矩形或胶囊形,无尖角;体块饱满,像玩具/糖果。
- 描边收边:控件外缘有一圈比主体更深的同色系描边(约 2–4px),让控件从背景中“跳”出来。
- 顶部高光:主体上半部有一道柔和的白色玻璃高光,营造塑料/糖果的反光质感。
- 柔和投影:控件下方有短距离、低透明度的柔和阴影(非硬黑边),增强层次。
- 暖色容器 + 亮色控件:面板多为奶油米色/浅蓝底,功能控件用高饱和糖果色点亮。
- 图标拟物 + 描边:业务图标为有体积感的拟物卡通图标,统一带深色描边与高光。
设计目标:在手机小屏上一眼可辨、点击区域明确、状态反馈清晰。
2. 配色系统
以下为基准图取色(十六进制为参考值,允许 ±5% 微调;实际以切图为准)。
2.1 背景与容器
| 用途 | 颜色 | 参考值 |
|---|---|---|
| 全局背景 | 浅蓝白 | #EAF3F8 |
| 主面板底(奶油米) | 暖米色 | #F6EBCF |
| 面板描边(暖棕) | 棕 | #C89B5C |
| 浅蓝面板底 | 浅蓝 | #DCEBF5 |
| 内容卡片底 | 近白 | #FBF6E9 |
| 半透明遮罩 | 深蓝黑 | #0B1724 @ 70–80% |
2.2 功能色(按钮/状态)
| 语义 | 主色 | 描边/按下态 | 用途 |
|---|---|---|---|
| 主操作 Primary | 草绿 #7ED321 |
深绿 #4E9A12 |
确定、开始、匹配等主行为 |
| 次操作 Secondary | 天蓝 #43B7F5 |
深蓝 #1E84C8 |
取消、次要行为 |
| 强调 Emphasis | 橙黄 #FFB13C |
深橙 #E07C18 |
需要吸引注意但非危险 |
| 危险 Danger | 珊瑚红 #FF5B5B |
深红 #D63333 |
删除、退出、警告 |
| 禁用 Disabled | 灰 #B9C0C8 |
深灰 #8A929B |
不可点击 |
| 选中高亮 | 亮绿 #9EEB3B |
— | 选中态染色/描边 |
2.3 文本色
| 用途 | 颜色 | 参考值 |
|---|---|---|
| 深色正文(浅底上) | 深棕/深蓝灰 | #5A4632 / #33405E |
| 浅色文字(按钮/深底上) | 近白 | #F6F8FF |
| 次要说明文字 | 蓝灰 | #B7C2D8 |
| 数值高亮(金币/比分) | 金黄 | #FFE27A |
| 文字描边(统一) | 深蓝/深灰 | #102033 / #0B1724(不使用纯黑) |
2.4 图标点缀色
金币金 #F5C033、钻石蓝 #46C8E6、生命红 #FF6B83、能量绿 #7ED321、星黄 #FFD54A、防具蓝 #5B8FE6,整体保持高饱和、同族描边。
3. 形状语言(圆角 / 描边 / 高光 / 阴影)
| 要素 | 规范 |
|---|---|
| 圆角 | 按钮/卡片圆角半径约为短边的 25–40%;胶囊控件(开关、进度条、滑条)为全圆端。 |
| 描边 | 外描边宽度 2–4px,颜色为主体色加深约 20–30%;描边随控件等比,不随九宫格拉伸变形(见第 8 节)。 |
| 高光 | 主体上半部一道柔和白色高光(透明度 30–60%),覆盖上 40% 区域,向下渐隐。 |
| 阴影 | 投影偏移 (0, -6 ~ -8),颜色 #06101F @ 70–80%,软边;用 UGUI Shadow 组件实现。 |
| 内凹 | 进度条/滑条/输入框的“槽”为内凹深色底,填充为带高光的亮色,形成凹凸对比。 |
4. 字体与可读性
- 统一使用 TextMeshPro(
TextMeshProUGUI/TMP_InputField/TMP_Dropdown),默认字体思源黑体 CN Regular(Assets/Game/Art/UI/Font/SourceHanSansCN-Regular.otf的 SDF 资源)。 - 字号层级(2048×1024 设计分辨率参考):界面标题 36–40;区块标题 28–32;按钮文字 24–30;正文/列表 20–24;说明/次要 18–20;大数值(比分等)64–80。
- 字重:标题、按钮、状态、倒计时用 Bold;正文用 Regular。
- 可读性(与
UnityProject.md第 38–40 条一致):- 浅色文字位于图片背景、高饱和按钮、半透明面板上时,必须加深蓝/深灰描边或阴影(
#102033/#0B1724),描边宽度保持轻量,避免粗黑边弄脏画面。 - 普通正文、列表、输入框文本优先靠背景对比度保证可读,不默认加描边。
- 深底面板放浅色字、浅底面板放深色字;避免浅色字直接压在浅底上。
- 浅色文字位于图片背景、高饱和按钮、半透明面板上时,必须加深蓝/深灰描边或阴影(
5. 各控件设计原则
5.1 面板 / 弹窗 (Panel)
- 结构:标题栏(深色木纹/蓝色横幅)+ 内容区(奶油米底)+ 操作区(底部按钮)。
- 弹窗右上角固定圆形关闭按钮(红色
btn_close);模态弹窗下方铺半透明遮罩拦截点击。 - 切图:
ui_panel_main(主窗)、ui_panel_popup(弹窗)、ui_panel_content(内容卡)、ui_panel_header(标题栏)、ui_panel_tooltip(提示),均为 九宫格 Sliced。 - 内容区四周留白≥24px;标题居中或左对齐配图标。
5.2 按钮 (Button)
- 四种语义色:主(绿)/次(蓝)/强调(橙)/危险(红),外形一致仅配色不同。
- 必须实现完整状态(
Button+ SpriteSwap,见第 7 节):Normal / Highlighted(Hover) / Pressed / Disabled。 - 按下态:颜色加深 + 视觉下沉(高光减弱、整体下移 1–2px 的观感)。
- 文字白色 + 轻描边;带图标时图标在左、文字居中或图标在上文字在下。
- 尺寸:主按钮高度≥72(设计分辨率),点击热区不小于可视区;小按钮成组排列。
- 切图:
btn_primary_*、btn_secondary_*、btn_warning_*、btn_small_*、圆形btn_close/btn_back/btn_home。
5.3 输入框 (TMP_InputField)
- 浅蓝/白圆角底,内凹观感;左侧可选图标,右侧可选功能图标(编辑/搜索/清空)。
- 必须声明
placeholder、characterLimit、contentType(密码用Password)。 - 占位符用次要蓝灰色
#B7C2D8;输入文本用深色,靠背景对比保证可读,不加描边。 - 切图:
input_bg_normal/input_bg_focus/input_bg_error,光标input_caret。
5.4 下拉框 (TMP_Dropdown)
- 暖黄/白圆角底,右侧朝下三角箭头
dropdown_arrow。 - 展开列表复用列表项样式(见 5.8)。切图
dropdown_bg。
5.5 数值步进器 (Stepper)
- 形式:
[ − ] 数值 [ + ],减号红圆按钮、加号绿圆按钮,中间数值居中。 - 复用
ico_minus/ico_plus圆形按钮 + 输入/显示框。
5.6 进度条 (Progress)
- 内凹深色底槽 + 高光亮色填充(绿/蓝/橙),全圆端胶囊形。
- 左端可挂圆形图标徽章,填充上叠加数值文本(如
350/500、80%),文本白色加轻描边。 - 切图:
progress_bg+progress_fill_*,填充用 Filled 或 Sliced;脚本驱动时按sizeDelta.x或fillAmount改变。
5.7 滑动条 (Slider)
- 内凹轨道 + 亮色已填充段 + 圆形拖拽手柄(白/蓝带高光)。
- 左侧图标说明(音量/音乐/亮度),右侧显示百分比。
- 切图:
slider_track/slider_fill/slider_handle。
5.8 滚动列表与滚动条 (ScrollView / Scrollbar)
- 列表项:奶油米圆角卡片,左图标 + 主标题 + 次要描述 + 右侧 chevron 箭头。
- 列表项状态:普通
ui_list_item_normal、选中ui_list_item_selected、禁用ui_list_item_disabled(均九宫格)。 - 滚动条:内凹轨道
scrollbar_track_*+ 亮蓝滑块scrollbar_thumb_*,全圆端。 - 内容用
VerticalLayoutGroup+ContentSizeFitter,视口用RectMask2D裁剪。
5.9 开关 / 勾选 / 单选 (Toggle / Checkbox / Radio)
- 开关:胶囊轨道(开=绿
toggle_bg_on/ 关=灰toggle_bg_off)+ 白色圆形滑块toggle_knob,配 开/关 文案。 - 复选框:
checkbox_off/checkbox_on(圆角方形 + 对勾);单选:radio_off/radio_on(圆形 + 实心点)。
5.10 页签 (Tab)
- 选中态高亮(蓝)凸起
tab_active,未选中态浅色下沉tab_inactive;选中页签与内容区无缝相连。 - 分段控件用
seg_left/seg_mid/seg_right拼接。
5.11 角标 / 徽章 (Badge)
- 图标按钮右上角红色圆形数字角标(未读/数量),切图
ui_badge_alert(红点/提醒)、ui_badge_base(普通)。 - 角标数字白色加粗;红点用于“有更新”无数字场景。
5.12 业务图标 (Icon)
- 拟物卡通 + 统一深色描边 + 高光;尺寸基准 64×64,重要图标可放大。
- 常用:货币
ico_coin、钻石ico_diamond、生命ico_heart、能量、星级ico_star、防具ico_shield、武器ico_sword、背包ico_bag、地图ico_map、钥匙ico_key、设置ico_settings等。 - 图标槽/道具格用
slot_empty/slot_selected/slot_locked(九宫格)。
5.13 资源/货币条 (Currency)
- 形式:圆形货币图标 + 数值(金黄高亮)+ 末尾绿色加号按钮(前往充值/获取)。
- 数值用千分位,居中垂直对齐图标。
5.14 头像 / 玩家卡 (Avatar)
- 圆形头像框
avatar_frame+ 等级角标 + 昵称 + 经验进度条(如870/1500)。
5.15 底部导航 (Bottom Nav)
- 一排图标按钮(首页/背包/任务/商店/设置),当前页高亮(凸起蓝底 + 图标点亮),其余浅色。
- 当前项放大并加底色块区分。
6. 状态与反馈
每个可交互控件至少定义以下状态,保证“可点、已选、不可点”一目了然:
| 状态 | 表现 |
|---|---|
| Normal | 默认色 + 高光 + 描边 |
| Highlighted/Hover | 整体提亮(更亮/更饱和) |
| Pressed | 加深 + 下沉,高光减弱 |
| Disabled | 去饱和转灰 + 降透明,无高光 |
| Selected/Active | 选中色描边或染色(亮绿 #9EEB3B),或凸起 |
- 按钮优先用 SpriteSwap(不同状态用不同切图);无专用切图时退化为 ColorTint。
- 选中反馈可叠加:背景换图 + 文字变色/加粗(如列表当前项)。
- 关键操作(确定/危险)给与即时视觉与(可选)音效反馈。
7. 与 Unity 实现的衔接
- 控件优先复用
Assets/Game/Art/UI/Texture/Common通用切图;缺图时用 gptimage2 按本风格生成到该目录(见UnityProject.md第 6 条)。 - 新界面按 JSON→Prefab 管线:在
Doc/UIPrefabCreater/写界面描述 JSON,Unity 自动生成 Prefab(UnityProject.md第 26–46 条)。 - 文本控件统一 TextMeshPro;按钮
transition优先SpriteSwap;九宫格图片声明"imageType": "Sliced",进度填充可用"Filled"。 - 按钮 SpriteSwap 状态对应切图:
*_normal(Target) /*_hover(Highlighted) /*_pressed(Pressed) /*_disabled(Disabled)。
8. 九宫格与间距
- 九宫格 (Sliced):所有可拉伸容器(面板、按钮、输入框、进度条、列表项等)必须设置正确的
Border,保证圆角与描边在任意尺寸下不变形;Border值参考Doc/UI_Pic_Set.md各切片。 - 导入设置:Texture Type =
Sprite (2D and UI),勾选Alpha Is Transparency,Mesh Type =Full Rect,Filter = Bilinear。 - 间距节奏:统一使用 8 的倍数(8 / 16 / 24 / 32)。控件内边距≥16,区块间距≥24,安全区四周≥24。
- 切图四周保留约 2px 透明边,避免双线性采样串色(项目切图已统一处理)。
9. 分辨率与适配
- 设计分辨率 2048×1024(
CanvasScaler= ScaleWithScreenSize,referenceResolution[2048,1024],Match = 0.5)。 - 布局以锚点为主:全屏元素用拉伸锚点;角标/悬浮按钮锚到对应屏幕角;主面板居中。
- 关键信息放安全区内,避免刘海/圆角遮挡;考虑长宽比从 4:3 到 20:9 的适配。
- 重要图标与文字用
None/High Quality压缩,避免边缘与文字出现压缩噪点。
10. 设计检查清单(提交前自检)
- 配色取自第 2 节调色板,语义色使用正确(绿=主/蓝=次/橙=强调/红=危险)。
- 控件有圆角 + 描边 + 高光 + 柔和阴影,风格与
ui_design.jpg一致。 - 可交互控件具备 Normal/Hover/Pressed/Disabled(必要时 Selected)状态。
- 文字用 TMP;浅色字在复杂/高饱和/深底上加了深蓝灰描边;深浅对比充足。
- 可拉伸控件设置了正确的九宫格 Border,任意尺寸不变形。
- 间距为 8 的倍数;点击热区足够大。
- referenceResolution = [2048,1024],锚点适配多分辨率。
- 复用 Common 通用切图;新图按本风格用 gptimage2 生成到对应目录。