プリセットは3つをまとめて束ねたものだ。空のままにした項目はデフォルトに落ちる。
| 層 | 決めるもの | 変え方 |
|---|---|---|
Theme |
色、サイズ、文字の大きさ、そしてエンジンが描くものすべての形 — ボタンのパネル、入力欄、タブ、トグルの絵 | .tres を書くか、tools/make_theme.py で生成する |
GoSkin |
コードが描くものすべての形 — スティック、クイックスロットの面、コーチマークのリング、チップ、スケルトン、区切り線、セクション見出し | 継承して、気にするメソッドだけを上書きする |
GoIconSet |
名前で引くアイコン — デフォルトの84枚、あるいはその上に重ねる中世セットの彫刻風16枚。テクスチャパックでもアイコンフォントでもよく、呼び出すコードはどちらでも同じだ | セットを丸ごと渡すか、いくつかの名前だけ差し替える |
StyleBoxFlat が持つ角は丸だけだ —
半径を 0 にすれば直角になるが、その中間は存在しない。斜めに切り落とした角、1辺だけ太い縁、外へにじむ発光。
エンジンはそのどれも描かない。しかもスティックとコーチマークは _draw() の中で描かれており、
テーマはそこへ届かない。
選ぶ
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
この1行でテーマ・スキン・アイコンが入れ替わる。エディタからは
プロジェクト設定 → Gohud → Theme → Preset、設定リソースからは GoConfig.preset で指定する。
1つだけ自分のものを使う
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons # アイコンだけ自前、ほかはプリセットのまま
theme・skin・icons を明示的に設定すると、プリセットより優先される。
組み込みの6プリセット
| プリセット | パネル | スキン · アイコン |
|---|---|---|
default_dark · default_light | 段階的な影を持つ丸い StyleBoxFlat のパネル。主ボタンは押すと沈み、離すと持ち上がる | GoSkin · デフォルトアイコン84種 |
scifi_dark · scifi_light | ネオンの縁と発光を持つ面取りの GoStyleBoxCut パネル。フォーカス印は GoStyleBoxBracket | GoSkinSciFi — 六角形のスティック · デフォルトアイコン |
medieval_dark · medieval_light | 鍛造した GoStyleBoxMedieval の枠 — 鉄と革、あるいは羊皮紙 — にリベットと角飾りをメニューだけへ | GoSkinMedieval · デフォルトの上に彫刻風16種 |
中世 — 鉄、革、そして羊皮紙
medieval_dark は暗い鉄と革にアンティークゴールドを合わせる。medieval_light
は羊皮紙とインクを使う。どちらも GoSkinMedieval と既存のウィジェット、そして彫刻の描き込みを入れた
オリジナルアイコン16種を使う。ナビゲーション用のアイコンは元のセットに落ちる。
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
# または: GoUi.use_preset(GoThemePresets.MEDIEVAL_LIGHT)
プリセットは UI を作る前に選ぶ。GoConfig.theme・skin・icons を
明示的に指定した場合は、そちらが優先されたままだ。
res://addons/gohud/examples/medieval/medieval.tscn を開いて F6 を押せば、動くキャラクターシート・
雑嚢・クエストジャーナルが見られる。ボタンでバリアントを切り替え、アイテムの詳細を開ける。


メニューの枠にはリベットと小さな角飾りがあり、常に見えている HUD は縁を静かに保つ。
体力・マナ・スタミナは赤・青・オリーブで塗る。Cinzel はタイトルとサブタイトルに限って使い、
本文はホスト側またはデフォルトのフォントのままだ。同梱フォントのライセンスは
assets/fonts/cinzel/OFL.txt にある。
彫刻セットが描き直すのは bag、book、box、coin、crown、
flag、heart、key、map、potion、shield、
star、sword、user で、さらに scroll と seal を足す。
それ以外の名前はデフォルトセットに落ちるので、close や settings はどのプリセットでも
同じ絵のままだ。Cinzel が持つのはラテン文字なので、各言語の見出しには shape.fonts から
専用のフォントを与える。
DPITexture としてインポートされること。実物のクイックスロットがスキンを使うこと。
複製したスキンのダイヤルを変えると、プリセットに触れずにスロットへ届くこと。そして戻したときに、
デフォルトと SF のジオメトリが復元されること。
自分だけの王国を作る
python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# themes/palettes/kingdom.json を編集してから:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# GDScript では、ウィジェットを作る前に:
GoUi.use_preset(&"kingdom")
JSON テーマは別の JSON テーマを継承できる。書かなかった値は親の設定をそのまま保ち、 循環する継承は拒否される。生成されたプリセットは親のアイコンセットを引き継ぐ。
| 設定 | 効果 |
|---|---|
shape.material | 0: 鉄 · 1: 革 · 2: 羊皮紙。表面の模様を決める。 |
shape.grain_alpha | 質感の不透明度。0 にすると無地の面になる。 |
shape.ornament_scale · shape.bevel_strength | メニューの角飾りの大きさと、ベベルのハイライトの強さ。 |
shape.fonts | title・subtitle・caption・body・button の役割を、アドオン内の res:// フォントファイルへ割り当てる。書かなかった役割は継承したフォントのままだ。 |
skin.dials | クイックスロットの角丸、リベットの表示、質感、ハイライト。ダイヤルの全一覧は下の表にある。 |