本文へスキップ

ボタン状態ジェネレーター · hover・pressed・disabled・focus

1つのボタンから5つの状態。状態ごとに明るさ・コントラスト・彩度・オーバーレイ・オフセット・アウトライン・アルファの操作が順に見え、編集できます。ピクセルの計算なので、元にないものは描きません。

UIパネル・ボタン・グリフシート・UIシート(PNG)をドロップ
UIラボを開く
ブラウザ内で処理し、ファイルはアップロードされません。
UIラボ:ナインスライスのガイドと複数サイズのプレビューがあるCC0のUIパネル
CC0アセット(Kenney)を開いた実際のUIラボ画面です。
出力
  • Nine-slice測定確認· Pillow
  • Bitmap font測定確認· independent .fnt parser
  • Button states測定確認· Pillow
  • Engine import未検証

できること

  • 既定値:hoverは明るさ+10%、pressedは−10%と1px下へ、disabledは彩度を落としてアルファ50%、focusは2pxのリング。
  • 状態ごとにすべての操作値が見えて編集可能。
  • 出力:状態ごとのPNG、パック済みストリップ、範囲と正確な操作値入りのstates.json。
  • 透明ピクセルは塗り替えません。

使い方

  1. ボタンのPNGをドロップ。
  2. 状態ごとの操作を調整。
  3. 5つのプレビューを並べて確認。
  4. ZIPで書き出し。

出力ファイルと検証方法

「測定確認」は、ダウンロードしたファイルをページ外(Pillow・numpy・独立したパーサー)で開き直して性質を測ったという意味です。ゲームエンジンでの読み込みは試していません。

書き出し先ファイル検証
Nine-slicenine-slice.json · previews · SETUP.md測定確認 Pillowリサイズした全プレビューで四隅のブロックは拡大されません。Chromiumではバイト一致、Firefoxでは半透明ピクセルがアルファの丸め1段階ぶん変わることがあります。すき間・重なり0。
Bitmap fontfont.png · font.fnt (BMFont text) · font.json測定確認 independent .fnt parserテスト内で別に書いたパーサーで.fntを読み戻し、ヘッダーと全グリフ範囲が一致。
Button statesstates/*.png · strip · states.json測定確認 Pillownormalは元と一致(Chromiumではバイト一致、Firefoxでは半透明ピクセルの色がアルファの丸め1段階以内)。states.jsonの各範囲がストリップから該当状態を正確に切り出します。
Engine importGodot NinePatchRect · Unity Sprite border · BMFont import未検証Godot・Unityでは実行していません。

検証の根拠

ナインスライスの四隅が100×40・300×80・800×200・420×120で拡大されず、同一列12本から境界6·6·6·6を提案。ボタン状態:normalは元と一致、disabledはアルファ128のグレー、focusリングも正確。.fntのグリフ記録がJSONと一致。.poの欠落グリフを正確に列挙。白地に黒文字で21:1を測定。画像はブラウザのCanvasを通ります。Chromiumはバイトがそのまま、Firefoxは半透明ピクセルの色を乗算済みの値で1段階に丸めます(Kenneyのボタンで測定:アルファ63で最大4段階)。アルファと不透明ピクセルはそのままです。

制限

  • カーニングペアなし、フォントは1ページ、MSDFなし。SDF出力はベータです。
  • TTFのcmapを解析しないため、欠落グリフのチェックには.fntかラボのフォントが必要です。
  • アトラスは1ページで、接している要素は1つとして扱います。
  • Godot・Unityでの描画は行っていません。エンジン用の値(patch margin、L・B・R・Tの境界)はドキュメント基準で、エンジンでは未検証です。

よくある質問

focusの画像が大きいのはなぜ?

focusリングがアウトラインの太さ分キャンバスを広げます。そのサイズはstates.jsonに記録されます。

normalの状態も変わりますか?

いいえ。normalは元とバイト一致です(確認済み)。

無料ですか?アカウントは必要ですか?

このページの機能はすべて無料で、アカウントなしで使えます。透かしや制限された書き出しはありません。

スプライトはアップロードされますか?

いいえ。Studioはこのブラウザのタブ内でデコード・パック・書き出しを行います。プロジェクトはブラウザ(IndexedDB)に自動保存され、.nerulioファイルとして保存できます。

Asepriteやエンジンのプラグインは必要ですか?

いいえ。.asepriteファイルはブラウザで読み書きします。エンジン別のバンドルには必要なものが入っています(Godotはインポート設定とシーン、UnityとGodotのタイルセットは小さなエディタースクリプト)。