← ブログへ

ゲームUIの9スライスと伸縮パネル:Figma / PSDのマークとエンジン別スライスQA

パネルや入力欄に9スライスが必要なとき、デザインでのボーダー指定と書き出しスケールの方法、Unity UGUI Sliced・Godot StyleBox・Cocos capsの合否判定と修正手順を解説します。ハンドオフチェックリスト項目6の拡張版です。

公開日
  • game-ui-design
  • game-dev-ai
  • ui-slicing
  • figma-to-unity
  • psd-to-unity
  • nine-slice
  • vberai
  • ai-studio
  • unity
  • godot
  • cocos
  • 2026
ゲームUIの9スライスと伸縮パネル:Figma / PSDのマークとエンジン別スライスQA

パネルを横に伸ばしたとき、角がぼやける、中央のテクスチャが繰り返される、角が楕円になるといった症状は、通常、ハンドオフ時に9スライス(9-slice / cap insets)が指定されていないか、エンジンがスプライト全体にSimpleスケールを適用していることを意味します。Unity EditorでImage Typeとボーダーを調整すればその画面は救えますが、次のデザイン更新で上書きされてしまいます。ボーダーが書き出しスケールと一致していなければ、修正のループが発生します。

以下の例はUnity UGUIのImage(Sliced / Tiled)を中心に扱います。GodotのStyleBoxTextureとCocosのスプライト9スライスも、コンテンツパディングを含めて同じ考え方に対応します。アンカーとSafe Areaについては、エンジン + MCPチェックリストの項目6を参照してください。ロケールに応じた伸縮領域のパディングについては、ロケールオーバーフローのデザインチェック7を参照してください。

デザインハンドオフチェックリストの項目6では、9スライス / 伸縮領域を明確にすることを求めています。本記事では、いつスライスすべきか、Figma/PSDでのマーク、3エンジンでの受け入れ、フルスクリーンキャンバスの手順、そして修正表を扱います。

不合格基準(いずれか1つでも該当=不合格): 伸ばしたときに角のアートが変形する。伸縮領域に意図しない繰り返しや継ぎ目が生じる。角の丸みがパネルサイズによって変わる。伸縮可能な背景が固定アイコンやアバターと一緒に拡大される。書き出しスケールがエンジンのボーダーピクセルと一致しない(1pxの隙間やぼやけたエッジ)。

Simple全体伸縮:角がボケ、角丸が歪む

9スライスが必要な場合と、単純な伸縮が禁止される場合

アセット種別すべきことしてはいけないこと
ダイアログ / 設定パネルの背景9スライス + コンテンツパディング単一のSimpleスプライトを全面に敷く
入力欄 / バーコンテナ9スライス、または左右キャップ + 中央リピートアートのルールなしに高さを潰す
主要ボタン(固定サイズ)固定スプライト、または9スライス + 最小幅角丸ボタンを1枚の画像として無限に横へ伸ばす
アイコン、アバター、スキル枠固定サイズ、9スライスなしパネル背景と結合して1枚の伸縮画像にする
フルスクリーン背景(額縁のないもの)仕様に基づく全面画像またはタイル戦略フルブリードにパネルのボーダーを流用する

ルール: 解像度、コピー、リスト内容によって幅または高さが変わり、かつ角の形を保つ必要があるなら → 9スライス、またはエンジンでの同等機能を使います。固定サイズのコントロールなら → 固定スプライト + レイアウト制約です。


Figma / PSDハンドオフのマーク(チェックリスト)

#チェック項目合格基準
1伸縮レイヤーが装飾 / アイコン / テキストと分離されているパネル背景のみスキン変更 + スライス。アイコンが背景と一緒に拡大されない
2ボーダー / キャップインセットをpxで指定(四辺)納品メモの@1xまたはチームの書き出しスケールと一致する
3書き出しスケールを固定(@1x/@2xまたは1080基準)エンジニアがボーダーの計算を推測しなくて済む
4角の丸みが伸縮領域の外にある、または仕様が非伸縮の角を許容している「角がカプセル状になる」状態を合格にしない
5伸縮領域がタイル可能または単色中央の繰り返しに明らかなズレがない
6意味のある命名例:Panel_Shop_9s、Input_Field_9s
7複数状態(通常 / 無効)で同じボーダーインセットが一致し、色/スキンのみ変化する
8PSDスライスまたはFigma書き出しメモに透明パディングを記載仕様にない限り、影をボーダーに含めない
9ハンドオフ項目5のボタン状態と一緒に納品不足状態を誤った9sアートで埋めない
10イベントスキン変更ではアートのみ変更し、ボーダーは変えないスキン変更の仕様を参照

Figma:リサイズ可能なフレームやスライスプラグインを使う場合は、コンポーネントのドキュメントにキャップインセットを記載します。PSD:5分でPSDをUnityに取り込むに沿ってスライスを揃えます。


3エンジン:コンポーネントと受け入れ

項目Unity UGUIGodot 4 ControlCocos UI
コンポーネントImage → Sliced / TiledStyleBoxTexture(patch margin)Sprite nine-slice / Sliced
ボーダー指定元Sprite EditorのBorder(左/上/右/下 px)content_margin / patchキャップインセット(LTRB)
コンテンツ領域RectTransform + 子のパディングMarginContainer + ThemeWidget / レイアウトのパディング
よくある失敗Simpleの誤用、スケールの異なるボーダーpatchとテクスチャサイズの不一致アトラスの回転でインセットが壊れる
合格幅150% / 200%で角がシャープ、中央がきれい同様。ThemeプレビューがPlayと一致同様。実機で長いリストをスポットチェック

Unity Editorでの受け入れ(他エンジンにも対応):

  1. PrefabのImageをSlicedにし、デザインに合ったボーダーを設定します。
  2. パネルのRectTransformをデザインの最小幅と最大幅までドラッグします。
  3. 角、エッジ、中央をFigma/PSDのキャプチャと比較します。
  4. Playモードで問題なければ → 出荷前チェックリストに従って実機を1回確認します。

幅150%/200%:四隅シャープ、中央に継ぎ目なし

フルスクリーンの考え方:キャンバス分割と再書き出し

PNGやAIのフルスクリーンアートしかない場合、ボーダーを推測することはできません。手順は、VberAI Studio(AI Studio、Google AI Studioとは別物)のその場での分割 → 伸縮可能なパネルをマーク → Prefab書き出し(決定的であり、LLMのYAMLではない)です。

ステップアクション受け入れ
1キャンバスにフルスクリーンを配置し、Panel_*と固定アイコンを分割階層に名前が付いている
2キャンバス上または書き出し前にパネルの9スライス意図を確認インセットの責任者が文書化されている
3Unity / Godot / CocosのPrefabを書き出し上表に従ってSliced QAを実施
4スキン変更 / ロケール対応後は、ツリー全体を再書き出しボーダー仕様が変わらなければ、インセットも変わらない

Figma/PSDがレイヤー化されている場合:Figma → UnityまたはPSDからUGUIへを優先し、その後エンジンでボーダーを微調整します。イベントごとに20枚のバラPNGを再書き出しするのは避けましょう。


修正のルーティング

症状考えられる原因対応担当
角がぼやける画像全体へのSimpleスケールSliced + 正しいボーダー。デザインがインセットを明記エンジニアリング + デザイン
中央の継ぎ目 / 繰り返しブロックインセットが1〜2pxずれている、スケール不一致デザインのpxに合わせ、スプライトを再インポートエンジニアリング
角が楕円に伸びるアートが9スライスに適していない固定サイズ、または新しい角アートデザイン
スキン変更後にボーダーが変わる新しいアートのサイズやパディングスキン変更仕様でキャンバスサイズを固定し、スキン変更後に再QAデザイン
リスト行の背景が変形する行の背景をパネル全体のように伸縮行専用の9s、または固定高さデザイン
特定の解像度でのみ失敗Canvas Scalerの非整数スケールエンジンチェックリストのAnchor/Scalerエンジニアリング

ルール: ボーダーがデザインと異なるなら → まずマークまたはスプライトの元データを修正し、その後Prefabを直します。納品物を更新せずInspectorだけを直すと → 次の書き出しで失われます。


「PNGパックのみ」のハンドオフとの比較

アプローチ向いている向いていない
手動書き出し + エンジニアがボーダーを埋めるパネルが少ない、デモ頻繁なスキン変更、多数の画面
Figma/PSD + VberAI Studioの構造化書き出しマルチ画面、マルチエンジン、イベントインセットのマークとQAの代替にはならない
エンジンでの一時的なSliced1画面のホットフィックスデザインソースなしでの長期的運用

推奨:デザインでインセットをマーク → 構造化Prefab書き出し → Unity Editorで2つの幅でSliced確認 → ロジックはMCP。Raycastとバインディングについては、エンジン + MCPチェックリストを参照してください。


よくある質問

角丸パネルに9スライスは使えますか?
使えますが、インセットはまっすぐな伸縮エッジ上に置き、角は非伸縮のコーナータイルに残す必要があります。パネルサイズとともに角の丸みが大きくなるなら → 不合格です。アートを修正するか、最大サイズを制限します。

影はボーダーに含めますか?
製品仕様で決めます。影が伸縮しない場合は、レイヤーを分けるか、外側のグローを除いた単色矩形にインセットをマークします。

TiledとSlicedのどちらを使いますか?
額縁のあるパネルはSliced、中央のテクスチャを繰り返す場合はTiled(またはタイル可能な中央アート)です。仕様に明記し、エンジニアに推測させないようにします。

Godot / Cocos用に別々のスライスが必要ですか?
インセットの意味は1つです。キャンバスのマルチエンジン書き出しで書き出し先を切り替え、表に従ってpatch/capを検証します。

VberAI Studioはボーダーを自動で埋めますか?
書き出しとアセットに依存します。受け入れは常にエンジンのSliced/StyleBoxです。デザインにインセットがなければ → エンジニアがEditorでボーダーを設定し、仕様に記録します。

VberAI StudioはGoogle AI Studioと同じですか?
いいえ。比較を参照してください。

こちらの記事もおすすめです