← 返回博客

游戏 UI 九宫格与可拉伸底图:Figma / PSD 标注与引擎 Sliced 验收

面板与输入框何时必须九宫格、设计稿如何标注 border 与导出倍率,以及 Unity UGUI Sliced、Godot StyleBox、Cocos 九宫格导入后的失败判据与回修路径;承接交稿自查第 6 项。

发布于
  • 游戏UI设计
  • 游戏开发AI提效
  • ui-slicing
  • figma-to-unity
  • psd-to-unity
  • nine-slice
  • vberai
  • ai-studio
  • unity
  • godot
  • cocos
  • 2026
游戏 UI 九宫格与可拉伸底图:Figma / PSD 标注与引擎 Sliced 验收

面板被拉宽后出现四角发糊、中间纹理重复、圆角被拉成椭圆,多数是九宫格(9-slice / cap insets)未在交稿阶段说清,或引擎里用了 Simple 缩放整张底图。程序在 Unity Editor 里改 Image Type 和 border 能救一屏,但下一版设计稿又会覆盖——若 border 与导出倍率不一致,返工会反复发生。

下文以 Unity UGUI 的 Image(Sliced / Tiled)为主;Godot 的 StyleBoxTexture、Cocos 的 Sprite 九宫格与 content padding 概念对应。锚点与 Safe Area 见 进引擎 MCP 清单 第 6 项;多语言下拉伸区内边距见 多语言爆框 设计自查第 7 项。

设计稿交稿自查 第 6 项要求「九宫格 / 可拉伸区域标清」。本文展开何时必须切、Figma/PSD 标注、三引擎对照验收、整屏稿进画布路径,并附回修表。

失败判据(任一即未通过): 四角装饰随拉伸变形;拉伸区出现非设计意图的重复纹理或接缝;圆角半径随面板尺寸变化;可拉伸底图与固定图标/头像同层缩放;导出倍率与引擎 border 像素不一致导致 1px 缝或虚边。

Simple 整图拉伸:四角发糊、圆角变椭圆

何时必须九宫格,何时禁止硬拉伸

资源类型建议禁止
弹窗 / 设置面板底九宫格 + 内容区 padding单图 Simple 拉满全屏
输入框、条形容器九宫格或左/右 cap + 中间 repeat仅压扁高度不换图
主按钮(固定宽高)固定尺寸 Sprite,或九宫格 + min 宽把带圆角按钮当背景无限拉宽
图标、头像、技能框固定尺寸,不 Nine-slice与面板底图合并成一张拉伸图
全屏背景(无圆角框)全图或分块平铺策略写进规格误对面板底用同一套 border

决策简则: 只要宽度或高度会随分辨率 / 文案 / 列表内容变化,且四角视觉必须保持形状 → 用九宫格或引擎等价物;尺寸固定的控件 → 固定 Sprite + 布局约束。


Figma / PSD 交稿标注(可勾选)

#检查通过标准
1可拉伸层与装饰/图标/文本分层面板底可换皮、可 Sliced,图标不跟着 scale
2Border / cap inset 以 px 标注(四边或上下左右)与 @1x 或团队约定倍率一致,写进交付说明
3导出倍率固定(@1x/@2x 或 1080 基准)程序换算 border 时不猜
4圆角在拉伸区外或规格允许「仅角部不拉伸」无「圆角被拉成胶囊」验收通过
5拉伸区纹理可平铺或纯色,无唯一方向图案中间 repeat 不出现明显错位
6命名含语义如 Panel_Shop_9s、Input_Field_9s
7多状态(normal / disabled)同一 border各状态 inset 一致,仅换色或换皮
8PSD 切片或 Figma export 含透明边说明不把阴影算进 border,除非规格明确要求
9与 交稿自查第 5 项 按钮状态一并交付缺状态不拿九宫格底图凑数
10活动换皮仅换图时 border 不变见 换皮 规格

Figma:使用 resizable frame 或插件导出的 slice 规则时,把 cap inset 写入组件说明。PSD:切片边界与 5 分钟 PSD 进 Unity 分层约定一致。

九宫格 cap inset 四边标注与 content 区示意


三引擎对照:组件与验收

项Unity UGUIGodot 4 ControlCocos UI
组件Image → Type Sliced / TiledStyleBoxTexture(patch margin)Sprite 九宫格 / Sliced
Border 来源Sprite Editor Border(L/T/R/B px)content_margin / patchCap insets(左下右上或 LTRB)
内容区RectTransform + 子节点 paddingMarginContainer + ThemeWidget / Layout padding
常见失败Simple 误用;Border 按错倍率patch 与纹理尺寸不一致图集旋转导致 inset 错
通过拉宽 150% / 200% 四角清晰、中间无接缝同左,Theme 预览与 Play 一致同左,真机抽一条长列表

Unity Editor 验收步骤(可复用到其他引擎等价操作):

  1. 将目标 Prefab 在 Inspector 中设为 Sliced,填入与稿一致的 border。
  2. 拖动面板 RectTransform 宽度至设计最大、最小两档。
  3. 检查四角、边线、拉伸区纹理与 Figma/PSD 截图对比。
  4. Play 模式下若仍正常 → 再抽 发布前清单 真机一条。

面板拉宽至 150% / 200%:四角清晰、中间无接缝

整屏概念稿:画布拆分与重导

只有 PNG 或 AI 整屏稿时,程序无法从单图猜 border。路径:VberAI Studio(AI Studio,≠ Google AI Studio)画布 原位拆分 → 标注可拉伸面板 → 导出 Prefab(确定性,非 LLM 改 YAML)。

步骤动作验收
1整屏进画布,拆出 Panel_* 与固定图标层级可命名
2在画布或导出前确认面板 9-slice 语义(或引擎内补 Border)与程序约定谁填 inset
3导出 Unity / Godot / Cocos Prefab进工程后按上表做 Sliced 验收
4换皮 / 多语言后 整树重导border 规格未变则 inset 不重算

已有 Figma/PSD 分层时,优先 Figma → Unity 或 PSD 切 UGUI,再在引擎内只做 border 微调——避免每版活动重手切 20 张散图。


回修路径表

现象最可能原因建议动作负责
四角模糊Simple 缩放整图改 Sliced + 正确 border;设计补 inset 标注程序 + 设计
中间接缝 / 重复块inset 错 1–2px;倍率不一致对齐稿面 px;重导 Sprite程序
圆角被拉长不该 Nine-slice 的图被拉伸改固定尺寸或重出圆角底图设计
换皮后 border 变新图尺寸或透明边不同换皮规范固定画布尺寸;换皮 后重验收设计
列表项高度变底图变形列表项底当全屏 panel 拉伸列表项单独 9s 规格或固定高设计
仅某分辨率失败Canvas Scaler + 非整数缩放查 进引擎清单 Anchor/Scaler程序

决策简则: border 与稿不一致 → 先改设计标注或 Sprite 源,再改 Prefab;仅改 Inspector 不写回交付物 → 下一版导出仍会丢。


与「只交 PNG 散图」的分工

手段适用不适用
手工 Export + 程序填 Border少量面板、Demo频繁换皮、多屏 UI
Figma/PSD + VberAI Studio 结构化导出多屏、多引擎、活动皮替代 inset 标注与验收
引擎内临时 Sliced紧急修一屏长期不更新设计源

推荐组合:设计标注 inset → 结构化导出 Prefab → Unity Editor Sliced 两档宽度验收 → MCP 绑逻辑。逻辑与 Raycast 见 进引擎 + MCP 清单。


常见问题

圆角面板能否九宫格?
可以,但 inset 必须落在「直边拉伸区」,圆角落在不拉伸的角块内。圆角半径随面板变大而变形 → 未通过,需改稿或固定最大宽高。

阴影算不算进 border?
由产品规格定:若阴影不参与拉伸,应拆层或把 inset 标在「不含外发光」的实底矩形上。

Tiled 和 Sliced 怎么选?
Sliced 适合有固定角与边的面板;中间为重复纹理时用 Tiled(或 Sliced 中间区 + 可平铺素材)。Specs 写清,避免程序猜。

Godot / Cocos 还要单独切一套吗?
inset 语义一套;导出目标换 画布多引擎导出 即可,各引擎填 patch margin / cap insets 对照上表验收。

VberAI Studio 会替程序填 Border 吗?
取决于导出配置与素材;验收仍以引擎内 Sliced/StyleBox 为准。稿面无 inset 时,程序必须在 Editor 填并与设计对齐后写进规格。

VberAI Studio 与 Google AI Studio 是一回事吗?
不是。见 对比文。

你可能还会喜欢这些文章