gohud

Trzy warstwy

← Motywy

Preset spina wszystkie trzy. Pola, które zostawisz puste, wracają do wartości domyślnych.

WarstwaDecyduje oJak to zmieniasz
Theme Kolory, rozmiary, skala tekstu i kształt wszystkiego, co rysuje silnik — panele przycisków, pola wprowadzania, zakładki, grafiki przełączników Napisz własny .tres albo wygeneruj go przez tools/make_theme.py
GoSkin Kształt wszystkiego, co rysuje kod — joysticka, lic szybkich slotów, pierścienia wskazówki instruktażowej, chipów, szkieletów, separatorów, nagłówków sekcji Odziedzicz po niej i nadpisz tylko te metody, na których ci zależy
GoIconSet Ikony po nazwie — 84 domyślne rysunki albo 16 grawerowanych rysunków zestawu średniowiecznego nałożonych na nie. Pakiet tekstur albo font ikon; kod wywołujący jest w obu przypadkach identyczny Dostarcz zestaw albo nadpisz tylko kilka nazw
Dlaczego sam motyw nie wystarcza. Zaokrąglony to jedyny narożnik, jaki ma StyleBoxFlat — ustaw promień na zero, a dostaniesz kąt prosty; pomiędzy nie ma nic. Ukośnie ścięte narożniki, pojedyncza pogrubiona krawędź, zewnętrzna poświata: silnik nie rysuje żadnej z tych rzeczy. A joystick i wskazówka instruktażowa są rysowane w _draw(), gdzie motyw nie sięga w ogóle.

Wybór presetu

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

Ta jedna linijka podmienia motyw, skórkę i ikony. Z poziomu edytora użyj Ustawienia projektu → Gohud → Theme → Preset; z zasobu ustawień — GoConfig.preset.

Zostawić jedno pole po swojemu

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # twoje ikony, cała reszta z presetu

Jawne ustawienie theme, skin lub icons wygrywa z presetem.

Czternaście wbudowanych presetów

PresetPaneleSkórka · ikony
default_dark · default_lightZaokrąglone panele StyleBoxFlat na stopniowanej skali cieni; przyciski główne unoszą się i zapadają przy naciśnięciuGoSkin · 84 domyślne ikony
scifi_dark · scifi_lightŚcięte panele GoStyleBoxCut z neonową krawędzią i poświatą; znaczniki fokusu GoStyleBoxBracketGoSkinSciFi — sześciokątny joystick · domyślne ikony
medieval_dark · medieval_lightKute ramy GoStyleBoxMedieval — żelazo i skóra albo pergamin — z nitami i ornamentami narożnymi w menuGoSkinMedieval · 16 grawerowanych ikon nałożonych na domyślne
material_light · material_dark NowośćMaterial 3 Expressive dla ekranów aplikacji — przyciski-pigułki 40dp w polu dotyku 48dp, okna dialogowe 28dp, wypełnione karty, pola z obrysem, suwak Expressive; komponenty aplikacji (pasek nawigacji, górny pasek aplikacji, FAB, pasek wyszukiwania, chipy, postęp, wybór daty) idą za tokenami komponentów M3GoSkinMaterial · domyślne ikony
kids_light · kids_dark NowośćDla dzieci — pudełko z zabawkami: grube obrysy i solidna krawędź pod każdym klawiszem, który zapada się po naciśnięciu; wklęsłe pola tekstowe, zakładki-bąbelki, galaretkowe paski; każdy rodzaj kontrolki w swoim kolorze kredki, cukierkowe szybkie sloty, odznaki-naklejki, tęczowy joystick i kolorowe wykresy. Rozmiary i czcionka projektu pozostają bez zmian.GoSkinKids · domyślne ikony
arcade_light · arcade_dark NowośćAutomat do gier rysowany przez GoStyleBoxArcade: każdy klawisz pomalowany gradientem z góry na dół, białym połyskiem i krawędzią, która zapada się po naciśnięciu, w granatowym obrysie tuszem, a jego etykieta jest biała z obrysem tuszem — zielony kolor główny, niebieskie klawisze, czerwone niebezpieczeństwo, lawendowe małe klawisze. Grube plansze z kolorową ramą wokół jasnego wnętrza; złota wstęga tytułu i okrągły czerwony klawisz zamknięcia na oknach.GoSkinArcade · domyślne ikony
comic_light · comic_dark NowośćKadry z komiksu rysowane przez GoStyleBoxComic: gruby obrys tuszem i twardy cień na każdej powierzchni, który znika po naciśnięciu; obrysowane tuszem przełączniki, pola wyboru i uchwyty suwaków, żółte pole tytułu na oknach. Grubość obrysu, rozmiar cienia i to, czy cienie w ogóle są widoczne, to ustawienia GoConfig.GoSkinComic · domyślne ikony

Wszystkie czternaście obok siebie

Ten sam ekran galerii, w którym zmieniono tylko nazwę presetu — nie różni się ani jedna linijka kodu widżetów. Każdy to telefon trzymany pionowo, 390×844.

Galeria widżetów gohud w presecie default_dark
default_dark
Galeria widżetów gohud w presecie default_light
default_light
Galeria widżetów gohud w presecie scifi_dark
scifi_dark
Galeria widżetów gohud w presecie scifi_light
scifi_light
Galeria widżetów gohud w presecie medieval_dark
medieval_dark
Galeria widżetów gohud w presecie medieval_light
medieval_light
Galeria widżetów gohud w presecie material_light
material_light
Galeria widżetów gohud w presecie material_dark
material_dark
Galeria widżetów gohud w presecie kids_light
kids_light
Galeria widżetów gohud w presecie kids_dark
kids_dark
Galeria widżetów gohud w presecie comic_light
comic_light
Galeria widżetów gohud w presecie comic_dark
comic_dark
Galeria widżetów gohud w presecie arcade_light
arcade_light
Galeria widżetów gohud w presecie arcade_dark
arcade_dark

Średniowiecze: żelazo, skóra i pergamin

medieval_dark łączy ciemne żelazo i skórę ze starym złotem. medieval_light używa pergaminu i atramentu. Oba korzystają z GoSkinMedieval, istniejących widżetów i 16 oryginalnych ikon z detalami grawerunku; ikony nawigacyjne wracają do zestawu oryginalnego.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
# Albo: GoUi.use_preset(GoThemePresets.MEDIEVAL_LIGHT)

Wybierz preset, zanim utworzysz swój interfejs. Jawne nadpisania GoConfig.theme, skin czy icons nadal mają pierwszeństwo. Otwórz res://addons/gohud/examples/medieval/medieval.tscn i naciśnij F6, by zobaczyć działającą kartę postaci, sakwę i dziennik zadań. Jej przyciski przełączają warianty i otwierają szczegóły przedmiotów.

Średniowieczne żelazo — interfejsy postaci, ekwipunku i zadań
Żelazo i skóra
Średniowieczny pergamin — interfejsy postaci, ekwipunku i zadań
Pergamin i atrament

Ramy menu mają nit i mały ornament narożny; stale widoczny HUD zachowuje spokojną krawędź. Zdrowie, mana i wytrzymałość używają wypełnień czerwonego, niebieskiego i oliwkowego. Cinzel jest ograniczony do tytułów i podtytułów; tekst główny zachowuje czcionkę gospodarza lub domyślną. Dołączona czcionka niesie swoją licencję w assets/fonts/cinzel/OFL.txt.

Zestaw grawerowany przerysowuje bag, book, box, coin, crown, flag, heart, key, map, potion, shield, star, sword i user, a dokłada scroll oraz seal. Każda inna nazwa wraca do zestawu domyślnego, więc close i settings zachowują swoje domyślne rysunki w każdym presecie. Cinzel pokrywa pismo łacińskie; nagłówkom w innych językach daj własną czcionkę przez shape.fonts.

Co zestaw testów sprawdza dla obu wariantów. Wybrana jest skórka średniowieczna; panele menu i HUD to kute ramy, z ornamentem tylko w menu; tytuły używają Cinzela, a tekst główny zachowuje odziedziczoną czcionkę; grawerowane ikony importują się jako DPITexture; prawdziwy szybki slot używa skórki; zmiana pokręteł skopiowanej skórki dociera do slotu bez ruszania presetu; a przełączenie z powrotem przywraca geometrię domyślną i sci-fi.

Zrób własne królestwo

python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Edytuj themes/palettes/kingdom.json, a potem:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# W GDScripcie, przed utworzeniem widżetów:
GoUi.use_preset(&"kingdom")

Motywy JSON mogą dziedziczyć po innych motywach JSON. Pominięte wartości zachowują ustawienia rodzica; dziedziczenie cykliczne jest odrzucane. Wygenerowany preset zachowuje zestaw ikon rodzica.

UstawienieEfekt
shape.material0: żelazo · 1: skóra · 2: pergamin. Decyduje o znakach na powierzchni.
shape.grain_alphaKrycie faktury. Użyj 0, by uzyskać czystą powierzchnię.
shape.ornament_scale · shape.bevel_strengthRozmiar ornamentu narożnego w menu i siła podświetlenia fazy.
shape.fontsPrzypisuje role title, subtitle, caption, body i button do plików czcionek res:// wewnątrz dodatku. Pominięte role zachowują odziedziczoną czcionkę.
skin.dialsPromień szybkiego slotu, widoczność nitów, faktura i podświetlenie. Pełna tabela niżej wymienia każde pokrętło.

Material 3: wygląd dla ekranów aplikacji Nowość

material_light i material_dark wnoszą do gohud Material 3 Expressive — kształty, rozmiary i typografię komponentów M3, z każdą liczbą odczytaną z oficjalnego zestawu tokenów M3 (material-web, tokens/versions/latest). Sięgaj po nie tam, gdzie ekran ma sprawiać wrażenie aplikacji, a nie menu gry: sklepy, skrzynki odbiorcze, strony konta i ustawień, tabele wyników, aplikacja towarzysząca.

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
# Albo: GoUi.use_preset(GoThemePresets.MATERIAL_DARK)
Galeria gohud w material_light — przyciski-pigułki, wypełnione karty i pola z obrysem
material_light
Galeria gohud w material_dark
material_dark
Okno potwierdzenia w material_light nad grą — narożniki 28dp i przyciski-pigułki
GoDialogs · material_light
Okno potwierdzenia w material_dark nad grą
GoDialogs · material_dark

Co się zmienia

CzęśćW Material 3
PrzyciskiPigułki (pełne zaokrąglenie). Płytka ma 40dp wysokości i jest wyśrodkowana w obszarze dotyku 48dp, więc obszar naciśnięcia się nie kurczy; płytka kompaktowego przycisku ma 32dp. Etykiety używają Roboto o grubości 500.
Okna dialogowe i arkuszeNarożniki 28dp (extra-large), margines 24dp i nagłówek 24sp — GoDialogs, GoSurface, GoSheet i każde okno zbudowane na nich.
KartyWypełnione karty z narożnikami 12dp i marginesem 16dp.
Pola i suwakiPola tekstowe z obrysem; suwak Expressive z wysokim uchwytem.
Chipy i segmentyNarożniki 8dp (small).
Komponenty aplikacjiGoNavBar, GoAppBar, GoFab, GoSearchBar, chipy, GoProgress i GoDatePicker idą za tokenami komponentów M3.
PismoDołączone Roboto dla tytułów, podtytułów, podpisów i przycisków. Tekst główny zachowuje czcionkę twojego projektu, więc koreański, japoński, chiński czy arabski nadal się wyświetlają.
KrycieKażdy panel jest nieprzezroczysty — powierzchnie M3 są pełne. (Panele domyślne, sci-fi i średniowieczne mają 80% krycia, więc gra przez nie prześwituje.)
SkórkaGoSkinMaterial: panel boczny to modalny arkusz boczny M3, powierzchnia konsoli to pływający pasek narzędzi M3, banery leżą na surface_container_low.
Gdzie specyfikacja ustępuje czytelności. M3 wygasza nieaktywną etykietę do 38%; gohud trzyma ją na 4.5:1, żeby dało się ją przeczytać. Snackbary zachowują jasną płytkę, bo kolor ich tekstu to token wybierany przez widżet — odwrócona płytka dałaby ciemny tekst na ciemnym tle. tools/check_contrast.py mierzy oba wyglądy tak jak każdy inny.

Roboto jest objęte licencją SIL Open Font License 1.1 (assets/fonts/roboto/OFL.txt) i używają go wyłącznie presety Material.

Kids: pudełko z zabawkami Nowość

kids_light (krem i brzoskwinia z winogronowym kolorem głównym) i kids_dark (jagodowe tło, słonecznie żółty kolor główny, miętowe pigułki) to wygląd dla gier dla dzieci i aplikacji edukacyjnych — pękaty, jaskrawy i miękki jak galaretka, taki, który mały palec sam chce nacisnąć.

GoUi.use_preset(&"kids_light")
# Albo: GoUi.use_preset(&"kids_dark")
Galeria gohud w kids_light — galaretkowo-cukierkowe przyciski w kolorach kredek
kids_light
Galeria gohud w kids_dark — pudełko z zabawkami na nocnoniebieskiej stronie
kids_dark
Okno potwierdzenia w kids_light — słoneczna wstęga tytułu i okrągły cukierkowy przycisk zamknięcia
GoDialogs · kids_light
Okno potwierdzenia w kids_dark — miętowa wstęga tytułu i cukierkowy przycisk zamknięcia
GoDialogs · kids_dark

Co się zmienia

CzęśćW wyglądach Kids
Każda powierzchniaGalaretkowy cukierek rysowany przez GoStyleBoxJelly: gruby obrys, solidna krawędź pod wszystkim, co naciskasz, korpus jaśniejszy u góry i ciemniejszy u dołu oraz biały połysk w lewym górnym rogu. Noszą go klawisze, wiersze list, zwijane nagłówki, pola, paski, suwaki i panele.
NaciśnięcieKrawędź znika, a powierzchnia zapada się na jej miejsce, po czym następuje galaretkowe zgniecenie — przez chwilę szeroko i płasko, potem sprężyste odbicie. Działa na każdym przycisku, który tworzy gohud; reduce_motion je wyłącza.
Pola, zakładki, paskiPole tekstowe to ta sama galaretka odwrócona do środka — wklęsła studzienka. Zakładki to bąbelki, paski mają galaretkowy połysk.
KolorKażdy rodzaj kontrolki we własnym kolorze kredki, dobranym przez ten sam generator co w każdym wyglądzie, więc każda bramka kontrastu nadal przechodzi.
OknaSłoneczna wstęga (nocą miętowa) za tytułem okna — tytuł zmniejsza się, aż do 15, żeby zostać w jednej linii — i okrągły cukierkowy przycisk zamknięcia w kredce niebezpieczeństwa z białym krzyżykiem.
Części skórkiGoSkinKids: szybkie sloty to cukierkowe klocki, które zapadają się na czas odnowienia, plakietki to naklejki, chipy i pigułka nawigacji to małe galaretki, awatary to okrągłe cukierki, joystick to tęcza, wykresy używają kredek, a alerty i powiadomienia to naklejki-notatki z solidnym rantem.
KryciePanele, karty, powiadomienia i okna wyskakujące są nieprzezroczyste.
Żadnych zmian rozmiaru. Obrys i krawędź są rysowane wewnątrz prostokąta każdej kontrolki, a każda powierzchnia zachowuje margines nadany przez motyw, więc ekran rozłożony w innym wyglądzie zachowuje swój układ, a projekt, który przypina własne rozmiary, mierzy te same części. Czcionka twojego projektu też zostaje, więc pisma niełacińskie nadal się wyświetlają.
Szybkie sloty, joystick i chip w każdej skórce — domyślnej, Kids, Material, średniowiecznej i sci-fi
Części, które rysuje skórka — rząd Kids jest drugi

Zrób własne pudełko z zabawkami

python3 addons/gohud/tools/new_theme.py candy --from kids_light
# Edytuj themes/palettes/candy.json, a potem:
python3 addons/gohud/tools/make_theme.py candy
GoUi.use_preset(&"candy")

Comic: gruby tusz Nowość

comic_light (białe panele na stronie w kolorze kremowego papieru, kobaltowy kolor główny) i comic_dark (łupkowe panele na nocnej stronie, kremowe obrysy, żółty kolor główny) rysują każdą powierzchnię jak kadr z komiksu — gruby obrys tuszem z twardym cieniem za nim.

GoUi.use_preset(&"comic_light")
# Albo: GoUi.use_preset(&"comic_dark")
Galeria gohud w comic_light — obrysowane tuszem klawisze, wiersze i paski z twardymi cieniami
comic_light
Galeria gohud w comic_dark — kremowy tusz na nocnej stronie
comic_dark
Okno potwierdzenia w comic_light — żółte pole tytułu i okrągły przycisk zamknięcia obrysowany tuszem
GoDialogs · comic_light
Okno potwierdzenia w comic_dark — żółte pole tytułu na łupkowej karcie
GoDialogs · comic_dark

Co się zmienia

CzęśćW wyglądach Comic
Każda powierzchniaRysowana przez GoStyleBoxComic: kolor powierzchni wewnątrz grubego obrysu w kolorze tuszu i twardy cień w dół i w prawo. Noszą ją klawisze, wiersze list, pola, zakładki, paski, suwaki, panele i okna wyskakujące.
NaciśnięcieCień znika, a powierzchnia zapada się na jego miejsce.
KontrolkiPrzełączniki, pola wyboru, przyciski opcji i uchwyty suwaków też są obrysowane tuszem, każdy z własnym małym cieniem.
OknaŻółte pole za tytułem okna i okrągły przycisk zamknięcia obrysowany tuszem.
Części skórkiGoSkinComic: szybkie sloty, chipy, plakietki, awatary, powiadomienia, pasek nawigacji, FAB i komórki dat są obrysowane tuszem; gałka joysticka rzuca cień; wykresy używają wyrazistych kolorów podstawowych.
KryciePanele, karty, powiadomienia i okna wyskakujące są nieprzezroczyste; karty HUD mają krycie 92%.

Ustawienia tuszu i cienia

Trzy ustawienia GoConfig zmieniają naraz każdą powierzchnię Comic. Nic nie jest przebudowywane — ekran przerysowuje się, gdy tylko je ustawisz.

GoUi.config.comic_border_width = 2.0   # obrys (dp) — domyślnie 3
GoUi.config.comic_shadow_size = 6.0    # cień (dp) — domyślnie 4
GoUi.config.comic_shadow = false       # nigdzie żadnych cieni

Pojedynczy widżet może pójść własną drogą, cokolwiek mówi ustawienie:

GoStyle.comic_shadow(skip_button, false)     # ten przycisk leży płasko
GoStyle.comic_shadow(card, true, true)       # ta karta i wszystko w niej zachowują cień
GoStyle.comic_border(title, 5.0)             # grubszy obrys na tym elemencie
Żadnych zmian rozmiaru. Obrys i cień są rysowane wewnątrz prostokąta każdej kontrolki, a każda powierzchnia zachowuje margines nadany przez motyw, więc ekran rozłożony w innym wyglądzie zachowuje swój układ. Czcionka twojego projektu też zostaje.
Szybkie sloty, joystick i chip narysowane przez skórkę Comic
Części, które rysuje skórka Comic

Zrób własny komiks

python3 addons/gohud/tools/new_theme.py inked --from comic_light
# Edytuj themes/palettes/inked.json, a potem:
python3 addons/gohud/tools/make_theme.py inked
GoUi.use_preset(&"inked")

Arcade: malowane klawisze i grube plansze Nowość

arcade_light (białe plansze na błękitnej stronie) i arcade_dark (granatowe plansze na nocnej stronie) ubierają każdy ekran jak automat do gier: każdy klawisz jest malowany — gradient od jasnej góry do głębszego dołu, biała smuga połysku i krawędź, która zapada się po naciśnięciu, w granatowym obrysie tuszem — a każda plansza jest gruba, to kolorowa rama wokół jasnego wnętrza.

GoUi.use_preset(&"arcade_light")
# Albo: GoUi.use_preset(&"arcade_dark")
Galeria gohud w arcade_light — zielone, niebieskie, czerwone i lawendowe malowane klawisze oraz plansza HUD w niebieskiej ramie na błękitnej stronie
arcade_light
Galeria gohud w arcade_dark — te same jaskrawe klawisze na nocnej stronie
arcade_dark
Okno potwierdzenia w arcade_light — złota wstęga tytułu, okrągły czerwony klawisz zamknięcia oraz niebieskie i zielone malowane klawisze na planszy w ramie
GoDialogs · arcade_light
Okno potwierdzenia w arcade_dark — złota wstęga na granatowej planszy
GoDialogs · arcade_dark

Co się zmienia

CzęśćW wyglądach Arcade
KlawiszeRysowane przez GoStyleBoxArcade: korpus z gradientem, biały połysk wokół lewego górnego rogu, głębsza krawędź i granatowy obrys tuszem. Klawisz główny jest zielony, zwykłe klawisze i wybrana zakładka niebieskie, klawisze niebezpieczne koralowe i czerwone, małe klawisze i pozostałe zakładki lawendowe.
EtykietyBiałe z obrysem tuszem na każdym malowanym klawiszu. Każda farba jest przesuwana, aż ta etykieta będzie czytelna na każdej wysokości gradientu — 4,6:1 lub więcej, z obrysem liczonym jako część litery, tak jak robi to WCAG.
NaciśnięcieKrawędź znika, klawisz wsuwa się na swoje miejsce i wyskakuje z powrotem.
PlanszePanele, karty, karty HUD i okna wyskakujące są grube: kolorowa rama (6dp wokół okna, 4 wokół karty lub karty HUD, 3 wokół menu lub powiadomienia) z własnym połyskiem i krawędzią, wokół jasnego wnętrza z linią tuszu. Ich margines trochę rośnie, by ją pomieścić, więc tekst nigdy nie dotyka ramy.
Pola i paskiPola tekstowe i rowki pasków to wklęsłe wnętrza; wypełnienie paska to błyszcząca malowana rurka w jaskrawym odcieniu jego koloru.
OknaZłota wstęga z białym tytułem obrysowanym tuszem i okrągły czerwony klawisz zamknięcia z białym krzyżykiem.
Części skórkiGoSkinArcade: szybkie sloty i chipy to nasadki klawiszy, odnawiający się slot zapala złotą obwódkę, plakietki to jasne płytki, alerty mają ramę w swoim kolorze, wybrana karta zapala złotą obwódkę, FAB to złoty klawisz, a joystick to błyszczący pad z czterema strzałkami.
KryciePanele, karty, powiadomienia i okna wyskakujące są nieprzezroczyste; karty HUD mają krycie 94%.

Pomaluj jeden klawisz na własny kolor

Motyw maluje klawisze według ich rodzaju. Menu, w którym każdy klawisz chce mieć własny kolor, maluje je po kolei — powierzchnia po najechaniu wychodzi trochę jaśniejsza, naciśnięta trochę głębsza, a wyłączona pozostaje przygaszona:

menu.add_child(GoStyle.arcade_paint(GoStyle.button("Resume", _resume, GoStyle.Tone.PRIMARY), Color("#4ACB3E")))
menu.add_child(GoStyle.arcade_paint(GoStyle.button("Shop", _shop), Color("#FF8A1E")))
GoStyle.arcade_paint(stage_card, Color("#E3343D"), true)   # rama planszy i każdy klawisz w niej
Etykieta zawsze jest czytelna. Farba, na której biała etykieta nie byłaby czytelna, jest przesuwana w stronę jaśniejszej lub głębszej, aż będzie, więc kolor, który podajesz, to punkt wyjścia. W pozostałych wyglądach arcade_paint() nic nie robi.
Klawisze zachowują rozmiar. Krawędź i połysk są rysowane wewnątrz prostokąta każdego klawisza, więc ekran rozłożony w innym wyglądzie zachowuje swój układ. Plansze dają treści trochę większy margines (karta i karta HUD 12dp, 15 na dole), żeby tekst nigdy nie dotykał ramy. Czcionka twojego projektu też zostaje.
Szybkie sloty, joystick i chip narysowane przez skórkę Arcade — błyszczące nasadki klawiszy i pad z czterema strzałkami
Części, które rysuje skórka Arcade

Zrób własny automat

python3 addons/gohud/tools/new_theme.py cabinet --from arcade_light
# Edytuj themes/palettes/cabinet.json — kolory *_vivid to farby — a potem:
python3 addons/gohud/tools/make_theme.py cabinet
GoUi.use_preset(&"cabinet")