罗德岛通讯与技术部

明日方舟 UI 设计

UI STUDY

透视倾斜是大屏入口层的奢侈品,手机端想要方舟味,走材质、字体、几何,以及「伪 3D」和「转场瞬态倾斜」。

状态:🟢 现行 · 最后核对 2026-09-08

调研日期:2026-09-06 · 调查方式:联网搜索 + 本地 26 GB 官方资源逆向 + 复刻项目源码分析 配套文档:ak-official-assets.md(官方素材在哪,这份是「怎么学、怎么借鉴」)


一句话结论

方舟的「高级感」来自 材质 + 几何约束 + 字体分层不来自透视。 透视倾斜是大屏入口层的奢侈品,手机端想要方舟味,走材质、字体、几何,以及「伪 3D」和「转场瞬态倾斜」。


一、四阶段入手路径

阶段 做什么 产出
① 建立眼睛 读三篇权威分析,读懂「舟味」为什么成立 能指着任意界面说出它好在哪、为什么
② 逆向拆解 用本地 26 GB 资源 + AssetStudio 提 spritepack / ui/pages,量真实间距/角度/色值 一手切图 + 量出来的参数
③ 临摹复刻 arknights-ui(MIT,H5+CSS 复刻主界面) 手上有能跑的方舟风格组件
④ 抽象成规范 把字体/字重/字距/配色/几何/动效写死成 token 可复用 design token

⚠️ F:\AssetStudio 只有 GUI 版(AssetStudioGUI.exe),无 CLI,提取得手工操作。


二、权威资料(三篇够用,别再漫搜)

  1. 腾讯游戏学堂《明日方舟 UI/UX 分析——藏在好看背后的先进性》(AJ)—— 最系统,六个角度: ① Diegetic Interface 主看板观瞄投影 ② 类 Fluent Design 多元质感 ③ 扁平化后的交互空间深度 ④ 装饰字体同时表达「古典骑士精神 + 科幻军工风」 ⑤ 焦距控制与底图处理塑造统一视觉识别 ⑥ 过场衔接降低页面层级、构建场景化结构
  2. 杰尼龟《「舟味」从何而来·UI/UX 设计篇》PDF(janniewang.net)—— 量出了可落地的硬参数, 以及「技能图标三层编码」规则
  3. NGA「明日方舟的美术——字体」帖(tid=17667410)—— 字体考据,硬货

核心认知:「舟味」不是风格,是约束。对字体、字重、配色、元素、Icon 严格约束形成的一套规则, 重点在于一致,且同样的内容在过去和未来视觉表现必须一致。


三、可量化的硬参数

字体四件套

字体 用途 关键参数
Novecento Wide 标题英文,最常用 全大写,两字形六字重,线条粗、重量感
Bender 基建英文 + 全局泛用数字 工业/复古风,两字重
思源黑体 Noto Sans SC 中文主体(数据/正文) 开源 7 字重
思源宋体 Noto Serif SC 大标题(作战/编队/基建/仓库) font-weight 900,40~60px

思源黑体的精确用法(杰尼龟量出来的,最值钱):

  • 干员代号 → Heavy,字距 -100
  • 基础档案(左右结构)→ Normal,字距 -100
  • 技能介绍(左对齐图标右侧)→ Normal,字距 0

⚠️ 大标题是宋体(Noto Serif 900)不是黑体。宋体那一层正是「古典骑士精神」的来源, 跟科幻军工风形成对撞。全用黑体会丢掉这一半味道。

配色

  • 比例:大面积中性色(灰/白/黑)+ 少量功能色(高亮蓝)+ 极少量警示色(红)
  • 高亮蓝承担:按钮 / 状态节点 / 激活反馈 / 信息重点 / 视觉引导
  • 手法:多处背景模糊提升层级对比度

从复刻实现量出的实际色值:

色值 用途
#05a7dc 青蓝 · 招募
#fdfdfb / #fff 白 · 理智 / 编队
#ebeceb 浅灰 · 基建
#424242 深灰 · 仓库
#e9e9e9 浅灰 · 情报
#323232 / #989898 主文字 / 次文字

几何

元素:矩形切割、数据化辅助线、工业感网格背景、参数化图形语言、工程制图式排布; 非对称构图、大面积留白、几何切割分区、文字错位排列、元素偏移式构图。 渊源:包豪斯 / 构成主义 / 瑞士国际主义

Fluent Design 五要素在方舟的落地

要素 方舟怎么用
Light 光效 手游无 hover,只用静止贴图(签到日历背光、材料奖励光圈)
Depth 视差 卡片 + 阴影 + 圆角(采购中心、基建)
Motion 动效 横向滑动、节点渐隐渐现、模块平移、按钮状态反馈、延迟加载
Material 材质 模糊纹理 + 半透明 → 高对比组件
Scale 比例 区块大小与颜色做明显区分

图标三层编码(可直接借鉴的设计思想)

技能图标 5 种颜色区分增益类型;有边框/无边框区分主动/被动; 背景图案不同区分增益/减益/爆发/生存。 即「颜色 + 边框 + 底纹」三层各自承载一维信息,互不干扰。


四、主界面侧栏浮层拆解

配套可运行 demo:ak-home-tab-demo.html(tilt / perspective / depth / opacity 实时可调)。

结构(4 个视差层 + 尘埃 canvas)

layer[data-depth="0"]     → 背景(不动)
layer[data-depth="0.01"]  → 角色立绘(几乎不动)
layer[data-depth="0.2"]   → 左栏 left menu box
layer[data-depth="0.2"]   → 右栏 right menu box
canvas#canvas-dust        → 尘埃粒子

「浮」的本质 = 菜单(depth 0.2)比立绘(0.01)和背景(0)动得快,产生纵深,不是靠阴影。

三个核心机制

/* ① 对称 3D 倾斜 —— 最标志性的特征,两边往屏幕中心倒 */
.right.menu.box{ transform: perspective(30em) rotateY(-10deg) scale(.9);
                 float:right; margin: 0 -80px auto auto; }  /* 负 margin 溢出屏幕,强化浮出 */
.left.menu.box { transform: perspective(30em) rotateY(10deg)  scale(.9); }
/* 左 +10deg / 右 -10deg;scale(.9) 补偿;transform-origin: bottom right */

/* ② pointer-events 三层开关(视差层要能收鼠标) */
.layer{ pointer-events: none; }        /* 视差层默认穿透 */
.menu.box{ pointer-events: initial; }  /* 只有面板恢复可点 */

/* ③ 半透明材质:方舟统一 opacity .9,从不 1.0 */

右栏分段(pos-1 ~ pos-5)

pos-1 状态栏 → pos-2 理智/作战 → pos-3 编队 team + 干员 member → pos-4 采购 shop + 招募 gamble → pos-5 任务 task + 基建 infrastructure + 仓库 warehouse

其他真实参数

  • 图标:全部来自 UI_HOME.png 一张雪碧图,background-position + background-size: auto NNNN% (百分比相对元素高度缩放图集)。装饰图标配 filter: invert(20%); opacity: .5 压暗当背景。
  • 细线几何.line-right{ width:500px; height:3px; background:#fff; }

⚠️ 踩坑

transform-style: preserve-3d 必须加在 .side,否则子面板 hover 的 translateZ(24px) 会被扁平化,「浮起」效果完全出不来。且 opacity / filter / overflow 是 grouping property, 会强制 flat——所以 .side 自身不能设这三个(透明度和裁剪只能放在内层 .panel 上)。


五、透视 vs 倾斜角(数学)

rotateY(θ) perspective(d)
是什么 转多少度(元素绕 Y 轴旋转角) 观察者站在 z = d 处(相机距离)
决定 方向感、戏剧性 畸变程度、近大远小的强弱
单独用 只变窄(两边等高,呈平行四边形) 完全没效果(平面无 z 位移)

关键:θ 是因,d 是放大器。θ = 0 时 d 完全失效。

公式(元素宽 W)

z 位移      z = (W/2) · sin(θ)          ← θ 只通过它起作用
近边缩放    s_near = d / (d - z)
远边缩放    s_far  = d / (d + z)
近远比      ratio  = s_near / s_far = (d + z) / (d - z)

当 z ≪ d 时:ratio ≈ 1 + W·sin(θ)/d立体感强度 = W · sin(θ) / d (元素越宽、转得越狠、站得越近,越立体)

方舟的实际落点

右栏 W = 783px,θ = 10°,d = 30em ≈ 480px(font-size 16px 时) → z = 68px,近边 ×1.165、远边 ×0.876,ratio = 1.33,落在「克制」档。 d / W = 0.61 ← 好记的经验值。

选值经验

目标 θ d ratio 感觉
长焦 10° 60em 1.15 冷静、工程制图感
方舟 10° 30em 1.33 克制,立体但不畸变
广角 10° 14em 1.79 戏剧化
强倾斜 20° 30em 1.79 立面感强

θ 区间:0–5° 几乎看不出;8–12° 方舟区间;15–20° 明显;>25° 文字可读性下降。

两个坑

  1. perspective(30em) 的 em 是元素自身的 font-size,不是根字体也不是视口。 元素 font-size 一变,透视跟着变。要可控就用 px,或确保该元素 font-size 稳定。
  2. perspective() 函数 vs perspective 属性(消失点不同):
    • 函数形式(方舟用的,写在 transform 里)→ 每个元素各自一个消失点(在自身 transform-origin) → 左右两栏对称,各自独立倾斜
    • 属性形式(设在父级)→ 所有子元素共享一个消失点 → 像同一台相机拍的,更真实但更戏剧化
    • 方舟选函数形式就是为了左右对称。

六、手机端取舍

结论:主交互层不要,氛围层小剂量,材质层全要。

继承 ✅ 放弃 ❌ 替代 🔄
材质(.9 + blur) rotateY 透视倾斜 clip-path 切角(伪 3D)
细线几何 + 冰蓝发丝线 陀螺仪 / 鼠标视差 多层阴影做「厚度」
宋体大标题(Noto Serif 900) hover 浮起(translateZ) 转场瞬态倾斜(静止回正)
浮窗不跳页
按压态 scale 反馈

理由

  1. 方舟自己只用倾斜于「主界面入口层」(6-8 个大按钮),进列表/详情立刻回平。 本 App 一打开就是聊天流,没有入口层的奢侈(与 visual-redesign.md 的「呼吸感 × 聊天冲突」一致)。
  2. 手机端两个硬约束:无 hover 无鼠标 → 视差无触发源(陀螺仪 deviceorientation 要 HTTPS + 用户授权, 隐私代价不值);倾斜让可点区域与视觉错位,触屏命中更糟。
  3. 倾斜代价在小屏被放大:同样 10°,基线更短 → 文字压缩感知更强、可读性掉更多。

七、与本项目已有积累的对照

docs/visual-redesign.md + docs/dock-redesign.md 的既有决策与外部结论高度吻合

已有决策 对应方舟结论
冰蓝 高亮蓝强调色
Bender 方向工业字 Bender(基建英文/数字)
次级系统浮窗不跳页 过场衔接降低页面层级
Diegetic 叙事锚点 Diegetic Interface
四根杠杆(材质/字体/几何/呼吸感) 完全一致

仍缺的

  • [ ] 思源黑体的字重-字距组合没定死(Heavy/-100、Normal/-100、Normal/0 三档)
  • [ ] 斜切几何的角度没量化(可用 10° 倾斜 / d/W≈0.6 / ratio 目标 1.3)
  • [ ] 图标「三层编码」思想尚未借鉴

附录:关键数值速查

⚠️ 摘录自 arknights-ui-language.md,以它为准——同一组数值别两处手写维护(防「第二份名单」)。

倾斜角 θ 10°(8–12° 区间)
透视距离 d ≈ 0.6 × 元素宽度
近远比(透视强度) 1.33(克制档 1.22–1.40)
面板不透明度 0.9(从不 1.0)
大标题字体 Noto Serif SC · weight 900
正文字体 Noto Sans SC
强调色 高亮蓝 #05a7dc(项目已定为冰蓝)
主文字 / 次文字 #323232 / #989898
图标图层 filter: invert(20%); opacity: .5