gohud

三層

← 佈景主題

一個預設集把三層綁成一組。留空的欄位會退回使用預設值。

決定什麼怎麼改
Theme 顏色、尺寸、文字比例,以及引擎畫出來的一切的形狀 — 按鈕面板、輸入欄、分頁、切換開關的圖檔 自己寫一份 .tres,或用 tools/make_theme.py 產生一份
GoSkin 程式碼畫出來的一切的形狀 — 搖桿、快捷格的面、導覽標記的圈、標籤片、骨架佔位、分隔線、區段標題 繼承它,只覆寫你在意的那幾個方法
GoIconSet 用名稱取用的圖示 — 84 張預設圖案,或中世紀組疊在上面的 16 張雕刻圖案。可以是材質包,也可以是圖示字型;呼叫端的程式碼兩種都一樣 換上一整組,或只覆寫其中幾個名稱
為什麼光有 Theme 不夠。StyleBoxFlat 只有圓角這一種角 — 把半徑設成零就變直角;中間什麼都沒有。斜切的角、單獨一道加粗的邊、外側的光暈:引擎一個都畫不出來。 而搖桿與導覽標記是在 _draw() 裡畫的,佈景主題根本伸不進去。

挑一個

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

這一行就換掉佈景主題、外觀與圖示。從編輯器要挑的話,用 專案設定 → Gohud → Theme → Preset;從設定資源則是 GoConfig.preset

只留一個欄位給自己

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # 圖示用你的,其餘全部用預設集的

明確設定 themeskinicons蓋過預設集。

內建的六種預設集

預設集面板外觀 · 圖示
default_dark · default_light圓角的 StyleBoxFlat 面板,搭配分級的陰影刻度;主要按鈕會浮起,按下時沉下去GoSkin · 84 個預設圖示
scifi_dark · scifi_light切角的 GoStyleBoxCut 面板,帶霓虹邊與光暈;焦點記號用 GoStyleBoxBracketGoSkinSciFi — 六邊形搖桿 · 預設圖示
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.themeskinicons 依然優先。開啟 res://addons/gohud/examples/medieval/medieval.tscn 並按 F6,就能看到可運作的 角色面板、行囊與任務日誌。裡面的按鈕會切換變體,也會打開物品細節。

中世紀鐵風格的角色、背包與任務介面
鐵與皮革
中世紀羊皮紙風格的角色、背包與任務介面
羊皮紙與墨水

選單框上有一顆鉚釘與一小塊角落裝飾;始終顯示的 HUD 則保持安靜的邊。 生命、魔力與體力分別用紅、藍與橄欖綠填色。Cinzel 只用在標題與副標題; 內文文字維持宿主/預設字型。內附字型的授權放在 assets/fonts/cinzel/OFL.txt

雕刻組重畫了 bagbookboxcoincrownflagheartkeymappotionshieldstarsworduser,另外加上 scrollseal。 其他每一個名稱都退回預設組,所以 closesettings 在每一種預設集裡都維持原本的 圖案。Cinzel 只涵蓋拉丁字母;在地化的標題請透過 shape.fonts 指定自己的字型。

測試套件對兩種變體檢查了什麼。中世紀外觀有被選用;選單與 HUD 面板是鍛造框,而裝飾只出現在選單上; 標題使用 Cinzel,內文則沿用繼承來的字型;雕刻圖示以 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.material0:鐵 · 1:皮革 · 2:羊皮紙。控制表面的紋路。
shape.grain_alpha紋理的不透明度。想要乾淨的表面就設成 0。
shape.ornament_scale · shape.bevel_strength選單角落裝飾的大小,以及斜角高光的強度。
shape.fonts把 title、subtitle、caption、body 與 button 這幾個角色對應到附加元件本地的 res:// 字型檔。省略的角色沿用繼承來的字型。
skin.dials快捷格圓角、鉚釘顯示與否、紋理與高光。下面的完整表格列出每一個旋鈕。