一個預設集把三層綁成一組。留空的欄位會退回使用預設值。
| 層 | 決定什麼 | 怎麼改 |
|---|---|---|
Theme |
顏色、尺寸、文字比例,以及引擎畫出來的一切的形狀 — 按鈕面板、輸入欄、分頁、切換開關的圖檔 | 自己寫一份 .tres,或用 tools/make_theme.py 產生一份 |
GoSkin |
程式碼畫出來的一切的形狀 — 搖桿、快捷格的面、導覽標記的圈、標籤片、骨架佔位、分隔線、區段標題 | 繼承它,只覆寫你在意的那幾個方法 |
GoIconSet |
用名稱取用的圖示 — 84 張預設圖案,或中世紀組疊在上面的 16 張雕刻圖案。可以是材質包,也可以是圖示字型;呼叫端的程式碼兩種都一樣 | 換上一整組,或只覆寫其中幾個名稱 |
StyleBoxFlat 只有圓角這一種角 —
把半徑設成零就變直角;中間什麼都沒有。斜切的角、單獨一道加粗的邊、外側的光暈:引擎一個都畫不出來。
而搖桿與導覽標記是在 _draw() 裡畫的,佈景主題根本伸不進去。
挑一個
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
這一行就換掉佈景主題、外觀與圖示。從編輯器要挑的話,用
專案設定 → Gohud → Theme → Preset;從設定資源則是 GoConfig.preset。
只留一個欄位給自己
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons # 圖示用你的,其餘全部用預設集的
明確設定 theme、skin 或 icons 會蓋過預設集。
內建的六種預設集
| 預設集 | 面板 | 外觀 · 圖示 |
|---|---|---|
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 匯入;實際的快捷格有用到該外觀;
改動複製出來的外觀的旋鈕,效果會傳到快捷格而不必更動預設集;切換回去時,預設與科幻的幾何形狀都能復原。
打造一個自己的王國
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 | 快捷格圓角、鉚釘顯示與否、紋理與高光。下面的完整表格列出每一個旋鈕。 |