Files
AIC-Project/Doc/design/UI_Design_Principles.md
T
2026-07-10 10:24:29 +08:00

13 KiB
Raw Blame History

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 @ 7080%

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 @ 7080%,软边;用 UGUI Shadow 组件实现。
内凹 进度条/滑条/输入框的“槽”为内凹深色底,填充为带高光的亮色,形成凹凸对比。

4. 字体与可读性

  • 统一使用 TextMeshProTextMeshProUGUI / 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 第 3840 条一致):
    • 浅色文字位于图片背景、高饱和按钮、半透明面板上时,必须加深蓝/深灰描边或阴影(#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)

  • 浅蓝/白圆角底,内凹观感;左侧可选图标,右侧可选功能图标(编辑/搜索/清空)。
  • 必须声明 placeholdercharacterLimitcontentType(密码用 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/50080%),文本白色加轻描边。
  • 切图:progress_bg + progress_fill_*,填充用 Filled 或 Sliced;脚本驱动时按 sizeDelta.xfillAmount 改变。

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/ 写界面描述 JSONUnity 自动生成 PrefabUnityProject.md 第 2646 条)。
  • 文本控件统一 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 TransparencyMesh Type = Full RectFilter = Bilinear。
  • 间距节奏:统一使用 8 的倍数(8 / 16 / 24 / 32)。控件内边距≥16,区块间距≥24,安全区四周≥24。
  • 切图四周保留约 2px 透明边,避免双线性采样串色(项目切图已统一处理)。

9. 分辨率与适配

  • 设计分辨率 2048×1024CanvasScaler = ScaleWithScreenSizereferenceResolution [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 生成到对应目录。