gohud

Trois couches

← Thématisation

Un préréglage réunit les trois. Les champs que vous laissez vides retombent sur les valeurs par défaut.

CoucheCe qu'elle décideComment la changer
Theme Les couleurs, les tailles, l'échelle typographique, et la forme de tout ce que le moteur dessine — panneaux de boutons, champs de saisie, onglets, illustrations des interrupteurs Écrivez un .tres, ou générez-en un avec tools/make_theme.py
GoSkin La forme de tout ce que le code dessine — le joystick, la face des emplacements rapides, l'anneau du repère guidé, les puces, les squelettes, les séparateurs, les en-têtes de section Dérivez-le et ne redéfinissez que les méthodes qui vous intéressent
GoIconSet Les icônes par leur nom — 84 dessins par défaut, ou les 16 dessins gravés du jeu médiéval par-dessus. Un pack de textures ou une police d'icônes ; le code appelant est identique dans les deux cas Fournissez un jeu, ou ne redéfinissez que quelques noms
Pourquoi un Theme seul ne suffit pas. Arrondi est le seul coin dont dispose StyleBoxFlat — mettez le rayon à zéro et vous obtenez un angle droit ; il n'y a rien entre les deux. Coins coupés en diagonale, une seule arête épaissie, un halo extérieur : le moteur n'en dessine aucun. Et le joystick et le repère guidé sont dessinés dans _draw(), où un thème n'a aucune prise.

En choisir un

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

Cette seule ligne change le thème, le skin et les icônes. Depuis l'éditeur, passez par Paramètres du projet → Gohud → Theme → Preset ; depuis une ressource de configuration, GoConfig.preset.

Garder un champ à vous

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # vos icônes, tout le reste vient du préréglage

Renseigner explicitement theme, skin ou icons l'emporte sur le préréglage.

Les quatorze préréglages intégrés

PréréglagePanneauxSkin · icônes
default_dark · default_lightPanneaux StyleBoxFlat arrondis sur une échelle d'ombres graduée ; les boutons principaux se soulèvent et s'enfoncent à l'appuiGoSkin · 84 icônes par défaut
scifi_dark · scifi_lightPanneaux GoStyleBoxCut chanfreinés avec arête néon et halo ; marques de focus GoStyleBoxBracketGoSkinSciFi — joystick hexagonal · icônes par défaut
medieval_dark · medieval_lightCadres GoStyleBoxMedieval forgés — fer et cuir, ou parchemin — avec rivets et ornements d'angle sur les menusGoSkinMedieval · 16 icônes gravées par-dessus celles par défaut
material_light · material_dark NouveauMaterial 3 Expressive pour les écrans d'application — boutons en pilule de 40dp dans une zone tactile de 48dp, dialogues de 28dp, cartes pleines, champs à contour, le curseur Expressive ; les composants d'application (barre de navigation, barre d'app supérieure, FAB, barre de recherche, chips, progression, sélecteur de date) suivent les jetons de composant M3GoSkinMaterial · icônes par défaut
kids_light · kids_dark NouveauPour les enfants — le coffre à jouets : contours épais et rebord plein sous chaque touche, qui s'enfonce quand on appuie ; champs de texte creusés, onglets en bulle, barres en gelée ; chaque type de contrôle dans sa propre couleur de crayon, emplacements rapides en bonbon, badges autocollants, joystick arc-en-ciel et graphiques colorés. Les tailles et la police du projet restent les mêmes.GoSkinKids · icônes par défaut
arcade_light · arcade_dark NouveauUne borne d'arcade dessinée par GoStyleBoxArcade : chaque touche peinte d'un dégradé de haut en bas, d'un reflet blanc et d'un rebord qui s'enfonce à l'appui, dans un contour d'encre bleu marine, son libellé blanc cerné d'encre — primaire vert, touches bleues, danger rouge, petites touches lavande. D'épais panneaux avec un cadre coloré autour d'un fond pâle ; un bandeau de titre doré et une touche de fermeture ronde et rouge sur les fenêtres.GoSkinArcade · icônes par défaut
comic_light · comic_dark NouveauDes cases de bande dessinée tracées par GoStyleBoxComic : un épais contour d'encre et une ombre franche sur chaque face, qui disparaît à l'appui ; interrupteurs, cases à cocher et poignées de curseur encrés, un cartouche de titre jaune sur les fenêtres. L'épaisseur du contour, la taille de l'ombre et l'affichage ou non des ombres sont des réglages de GoConfig.GoSkinComic · icônes par défaut

Les quatorze, côte à côte

Le même écran de galerie où seul le nom du préréglage change — pas une ligne de code des widgets ne diffère. Chaque capture est un téléphone tenu à la verticale, 390×844.

La galerie de widgets gohud avec le préréglage default_dark
default_dark
La galerie de widgets gohud avec le préréglage default_light
default_light
La galerie de widgets gohud avec le préréglage scifi_dark
scifi_dark
La galerie de widgets gohud avec le préréglage scifi_light
scifi_light
La galerie de widgets gohud avec le préréglage medieval_dark
medieval_dark
La galerie de widgets gohud avec le préréglage medieval_light
medieval_light
La galerie de widgets gohud avec le préréglage material_light
material_light
La galerie de widgets gohud avec le préréglage material_dark
material_dark
La galerie de widgets gohud avec le préréglage kids_light
kids_light
La galerie de widgets gohud avec le préréglage kids_dark
kids_dark
La galerie de widgets gohud avec le préréglage comic_light
comic_light
La galerie de widgets gohud avec le préréglage comic_dark
comic_dark
La galerie de widgets gohud avec le préréglage arcade_light
arcade_light
La galerie de widgets gohud avec le préréglage arcade_dark
arcade_dark

Médiéval : fer, cuir et parchemin

medieval_dark associe le fer sombre et le cuir à l'or ancien. medieval_light emploie le parchemin et l'encre. Les deux utilisent GoSkinMedieval, les widgets existants, et 16 icônes originales aux détails gravés ; les icônes de navigation retombent sur le jeu d'origine.

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

Choisissez le préréglage avant de créer votre UI. Les redéfinitions explicites de GoConfig.theme, skin ou icons restent prioritaires. Ouvrez res://addons/gohud/examples/medieval/medieval.tscn et appuyez sur F6 pour une fiche de personnage, une besace et un journal de quêtes fonctionnels. Ses boutons changent de variante et ouvrent le détail des objets.

Interfaces de personnage, d'inventaire et de quêtes en médiéval Fer
Fer et cuir
Interfaces de personnage, d'inventaire et de quêtes en médiéval Parchemin
Parchemin et encre

Les cadres de menu portent un rivet et un petit ornement d'angle ; le HUD, toujours visible, garde une arête discrète. Les points de vie, le mana et l'endurance utilisent des remplissages rouge, bleu et olive. Cinzel est limitée aux titres et aux sous-titres ; le corps de texte conserve la police du projet hôte ou celle par défaut. La police fournie inclut sa licence dans assets/fonts/cinzel/OFL.txt.

Le jeu gravé redessine bag, book, box, coin, crown, flag, heart, key, map, potion, shield, star, sword et user, et ajoute scroll et seal. Tout autre nom retombe sur le jeu par défaut : close et settings gardent donc leurs dessins d'origine dans tous les préréglages. Cinzel couvre l'écriture latine ; donnez aux titres localisés leur propre police via shape.fonts.

Ce que la suite de tests vérifie pour les deux variantes. Le skin médiéval est bien sélectionné ; les panneaux de menu et de HUD sont des cadres forgés, avec l'ornement sur les menus seulement ; les titres utilisent Cinzel tandis que le corps de texte garde la police héritée ; les icônes gravées s'importent en DPITexture ; un vrai emplacement rapide utilise le skin ; modifier les molettes d'un skin copié atteint l'emplacement sans toucher au préréglage ; et revenir en arrière restaure la géométrie par défaut et science-fiction.

Créez votre propre royaume

python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Modifiez themes/palettes/kingdom.json, puis :
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# En GDScript, avant de créer les widgets :
GoUi.use_preset(&"kingdom")

Un thème JSON peut hériter d'un autre thème JSON. Les valeurs omises conservent les réglages du parent ; l'héritage circulaire est rejeté. Le préréglage généré conserve le jeu d'icônes de son parent.

RéglageEffet
shape.material0 : fer · 1 : cuir · 2 : parchemin. Contrôle les marques de la surface.
shape.grain_alphaOpacité de la texture. Mettez 0 pour une surface nette.
shape.ornament_scale · shape.bevel_strengthTaille de l'ornement d'angle des menus et intensité du reflet biseauté.
shape.fontsAssocie les rôles title, subtitle, caption, body et button à des fichiers de police res:// internes à l'add-on. Les rôles omis gardent leur police héritée.
skin.dialsRayon des emplacements rapides, visibilité des rivets, grain et reflet. Le tableau complet ci-dessous liste chaque molette.

Material 3 : une apparence pour les écrans d'application Nouveau

material_light et material_dark apportent Material 3 Expressive à gohud — les formes, les tailles et la typographie des composants M3, chaque valeur étant lue dans le jeu de jetons M3 officiel (material-web, tokens/versions/latest). Prenez-les là où un écran doit ressembler à une application plutôt qu'à un menu de jeu : boutiques, boîtes de réception, pages de compte et de réglages, classements, application compagnon.

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
# Ou : GoUi.use_preset(GoThemePresets.MATERIAL_DARK)
La galerie gohud en material_light — boutons en pilule, cartes pleines et champs à contour
material_light
La galerie gohud en material_dark
material_dark
Une boîte de dialogue de confirmation en material_light — coins de 28dp et boutons en pilule par-dessus un jeu
GoDialogs · material_light
Une boîte de dialogue de confirmation en material_dark par-dessus un jeu
GoDialogs · material_dark

Ce qui change

PartieDans Material 3
BoutonsDes pilules (l'arrondi complet). La plaque fait 40dp de haut, centrée dans la cible tactile de 48dp : la zone d'appui ne rétrécit donc pas ; la plaque d'un bouton compact fait 32dp. Les libellés sont en Roboto, graisse 500.
Boîtes de dialogue et feuillesCoins de 28dp (extra-large), marge intérieure de 24dp et un titre de 24sp — GoDialogs, GoSurface, GoSheet et chaque pop-up construit sur eux.
CartesDes cartes pleines avec des coins de 12dp et une marge intérieure de 16dp.
Champs et curseursDes champs de texte à contour ; le curseur Expressive avec sa poignée haute.
Chips et segmentsCoins de 8dp (small).
Composants d'applicationGoNavBar, GoAppBar, GoFab, GoSearchBar, les chips, GoProgress et GoDatePicker suivent les jetons de composant M3.
TypographieRoboto, fournie avec le kit, pour les titres, sous-titres, légendes et boutons. Le corps de texte garde la police de votre projet : le coréen, le japonais, le chinois ou l'arabe s'affichent toujours.
OpacitéChaque panneau est opaque — les surfaces M3 sont pleines. (Les panneaux par défaut, science-fiction et médiévaux sont opaques à 80 %, si bien que le jeu transparaît.)
SkinGoSkinMaterial : le tiroir est la feuille latérale modale M3, la face de la console est la barre d'outils flottante M3, les bannières reposent sur surface_container_low.
Là où la spécification cède à la lisibilité. M3 estompe un libellé désactivé à 38 % ; gohud le garde à 4,5:1 pour qu'il reste lisible. Les snackbars gardent une plaque claire, parce que la couleur de leur texte est un jeton que choisit le widget — une plaque inversée mettrait du texte sombre sur du sombre. tools/check_contrast.py mesure les deux apparences comme toutes les autres.

Roboto est sous licence SIL Open Font License 1.1 (assets/fonts/roboto/OFL.txt) et n'est utilisée que par les préréglages Material.

Enfants : le coffre à jouets Nouveau

kids_light (crème et pêche avec un primaire raisin) et kids_dark (fond myrtille, primaire jaune soleil, pilules menthe) forment une apparence faite pour les jeux d'enfants et les applications d'apprentissage — épaisse, vive et moelleuse, le genre de chose qu'un petit doigt a envie d'appuyer.

GoUi.use_preset(&"kids_light")
# Ou : GoUi.use_preset(&"kids_dark")
La galerie gohud en kids_light — boutons en bonbon gélifié aux couleurs de crayon
kids_light
La galerie gohud en kids_dark — le coffre à jouets sur une page bleu nuit
kids_dark
Une boîte de dialogue de confirmation en kids_light — un ruban de titre ensoleillé et un bouton de fermeture rond en bonbon
GoDialogs · kids_light
Une boîte de dialogue de confirmation en kids_dark — un ruban de titre menthe et un bouton de fermeture en bonbon
GoDialogs · kids_dark

Ce qui change

PartieDans les apparences enfants
Chaque faceUn bonbon en gelée, dessiné par GoStyleBoxJelly : un contour épais, un rebord plein sous tout ce qui s'appuie, un corps plus clair en haut et plus profond en bas, et un reflet blanc en haut à gauche. Touches, rangées de liste, titres repliables, champs, barres, curseurs et panneaux le portent tous.
AppuiLe rebord disparaît et la face s'enfonce à sa place, puis la gelée s'écrase — large et plate un instant, puis elle reprend sa forme d'un rebond élastique. Cela vaut pour chaque bouton créé par gohud ; reduce_motion le désactive.
Champs, onglets, barresUn champ de texte est la même gelée retournée — un puits creusé. Les onglets sont des bulles, les barres ont un reflet de gelée.
CouleurChaque type de commande dans sa propre couleur de crayon, choisie par le même générateur que pour toutes les apparences : chaque seuil de contraste tient donc toujours.
FenêtresUn ruban ensoleillé (menthe la nuit) derrière le titre d'une fenêtre — le titre rétrécit, jusqu'à 15, pour tenir sur une ligne — et un bouton de fermeture rond en bonbon, couleur crayon de danger, avec une croix blanche.
Parties du skinGoSkinKids : les emplacements rapides sont des blocs de bonbon qui s'enfoncent pendant le temps de recharge, les badges sont des autocollants, les chips et la pilule de navigation de petites gelées, les avatars des bonbons ronds, le joystick un arc-en-ciel, les graphiques utilisent des crayons, les alertes et les avis sont des notes autocollantes au bord plein.
OpacitéLes panneaux, les cartes, les avis et les pop-ups sont opaques.
Aucun changement de taille. Le contour et le rebord sont dessinés à l'intérieur du rectangle de chaque commande, et chaque face garde la marge intérieure que le thème lui a donnée : un écran disposé dans une autre apparence garde sa mise en page, et un hôte qui fixe ses propres tailles mesure les mêmes parties. La police de votre projet est conservée elle aussi : les écritures non latines s'affichent toujours.
Des emplacements rapides, un joystick et une puce dans chaque skin — par défaut, enfants, Material, médiéval et science-fiction
Les parties que dessine un skin — la rangée enfants est la deuxième

Créez votre propre coffre à jouets

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

Bande dessinée : encre épaisse Nouveau

comic_light (panneaux blancs sur une page crème papier, un primaire cobalt) et comic_dark (panneaux ardoise sur une page de nuit, contours crème, un primaire jaune) dessinent chaque face comme une case de bande dessinée — un épais contour d'encre avec une ombre franche derrière.

GoUi.use_preset(&"comic_light")
# Ou : GoUi.use_preset(&"comic_dark")
La galerie gohud en comic_light — touches, rangées et barres encrées avec des ombres franches
comic_light
La galerie gohud en comic_dark — encre crème sur une page de nuit
comic_dark
Une boîte de dialogue de confirmation en comic_light — un cartouche de titre jaune et un bouton de fermeture rond encré
GoDialogs · comic_light
Une boîte de dialogue de confirmation en comic_dark — un cartouche jaune sur une carte ardoise
GoDialogs · comic_dark

Ce qui change

PartieDans les apparences bande dessinée
Chaque faceDessinée par GoStyleBoxComic : la couleur de surface dans un épais contour couleur d'encre, et une ombre franche vers le bas et la droite. Les touches, les rangées de liste, les champs, les onglets, les barres, les curseurs, les panneaux et les pop-ups la portent tous.
AppuiL'ombre disparaît et la face s'enfonce à sa place.
CommandesLes interrupteurs, les cases à cocher, les boutons radio et les poignées de curseur sont encrés eux aussi, chacun avec sa propre petite ombre.
FenêtresUn cartouche jaune derrière le titre d'une fenêtre et un bouton de fermeture rond encré.
Parties du skinGoSkinComic : les emplacements rapides, les puces, les badges, les avatars, les avis, la barre de navigation, le FAB et les cases de date sont encrés ; le bouton du joystick projette une ombre ; les graphiques utilisent des primaires franches.
OpacitéLes panneaux, les cartes, les avis et les pop-ups sont opaques ; les cartes du HUD sont opaques à 92 %.

Réglages d'encre et d'ombre

Trois réglages de GoConfig changent d'un coup toutes les faces bande dessinée. Rien n'est reconstruit — l'écran se redessine dès que vous les modifiez.

GoUi.config.comic_border_width = 2.0   # le contour (dp) — 3 par défaut
GoUi.config.comic_shadow_size = 6.0    # l'ombre (dp) — 4 par défaut
GoUi.config.comic_shadow = false       # aucune ombre nulle part

Un widget peut faire bande à part, quel que soit le réglage :

GoStyle.comic_shadow(skip_button, false)     # ce bouton reste à plat
GoStyle.comic_shadow(card, true, true)       # cette carte et tout ce qu'elle contient gardent leur ombre
GoStyle.comic_border(title, 5.0)             # un contour plus épais sur celui-ci
Aucun changement de taille. Le contour et l'ombre sont dessinés à l'intérieur du rectangle de chaque commande, et chaque face garde la marge intérieure que le thème lui a donnée : un écran disposé dans une autre apparence garde sa mise en page. La police de votre projet est conservée elle aussi.
Des emplacements rapides, un joystick et une puce dessinés par le skin bande dessinée
Les parties que dessine le skin bande dessinée

Créez votre propre bande dessinée

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

Arcade : touches peintes et panneaux épais Nouveau

arcade_light (panneaux blancs sur une page bleu ciel) et arcade_dark (panneaux bleu marine sur une page de nuit) habillent chaque écran comme une borne d'arcade : chaque touche est peinte — un dégradé d'un haut clair vers un bas plus soutenu, un trait de reflet blanc et un rebord qui s'enfonce à l'appui, dans un contour d'encre bleu marine — et chaque panneau est épais, un cadre coloré autour d'un fond pâle.

GoUi.use_preset(&"arcade_light")
# Ou : GoUi.use_preset(&"arcade_dark")
La galerie gohud en arcade_light — des touches peintes en vert, bleu, rouge et lavande et un panneau de HUD encadré de bleu sur une page bleu ciel
arcade_light
La galerie gohud en arcade_dark — les mêmes touches vives sur une page de nuit
arcade_dark
Une boîte de dialogue de confirmation en arcade_light — un bandeau de titre doré, une touche de fermeture ronde et rouge et des touches peintes en bleu et en vert sur un panneau encadré
GoDialogs · arcade_light
Une boîte de dialogue de confirmation en arcade_dark — un bandeau doré sur un panneau bleu marine
GoDialogs · arcade_dark

Ce qui change

PartieDans les apparences arcade
TouchesDessinées par GoStyleBoxArcade : un corps en dégradé, un reflet blanc autour du coin supérieur gauche, un rebord plus soutenu et un contour d'encre bleu marine. La touche principale est verte, les touches normales et l'onglet choisi bleus, les touches de danger corail et rouges, les petites touches et les autres onglets lavande.
LibellésBlancs et cernés d'encre sur chaque touche peinte. Chaque peinture est ajustée jusqu'à ce que ce libellé se lise à chaque hauteur de son dégradé — 4,6:1 ou plus, le contour comptant comme partie de la lettre, comme le font les WCAG.
AppuiLe rebord disparaît, la touche s'enfonce à sa place puis rebondit.
PanneauxLes panneaux, les cartes, les cartes du HUD et les pop-ups sont épais : un cadre coloré (6dp autour d'une fenêtre, 4 autour d'une carte ou d'une carte du HUD, 3 autour d'un menu ou d'un avis) avec son propre reflet et son propre rebord, autour d'un fond pâle bordé d'un trait d'encre. Leur marge intérieure grandit un peu pour l'accueillir, si bien que le texte ne touche jamais le cadre.
Champs et barresLes champs de texte et les rainures des barres sont des creux ; le remplissage d'une barre est un tube peint et brillant, dans la teinte vive de sa couleur.
FenêtresUn bandeau doré portant un titre blanc cerné d'encre, et une touche de fermeture ronde et rouge avec une croix blanche.
Parties du skinGoSkinArcade : les emplacements rapides et les puces sont des capuchons de touche, un emplacement en recharge s'allume d'un liseré doré, les badges sont des plaques claires, les alertes sont encadrées de leur couleur, la carte choisie s'allume d'un liseré doré, le FAB est une touche dorée et le joystick un socle brillant à quatre flèches.
OpacitéLes panneaux, les cartes, les avis et les pop-ups sont opaques ; les cartes du HUD sont opaques à 94 %.

Peindre une touche de sa propre couleur

Le thème peint les touches selon leur type. Un menu dont chaque touche veut sa propre couleur les peint une à une — la face au survol ressort un peu plus claire, celle de l'appui un peu plus soutenue, et la face désactivée reste éteinte :

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)   # le cadre d'un panneau, et chaque touche qu'il contient
Le libellé se lit toujours. Une peinture sur laquelle le libellé blanc ne se lirait pas est éclaircie ou foncée jusqu'à ce qu'il se lise : la couleur que vous passez est un point de départ. Sous les autres apparences, arcade_paint() ne fait rien.
Les touches gardent leur taille. Le rebord et le reflet sont dessinés à l'intérieur du rectangle de chaque touche : un écran disposé dans une autre apparence garde sa mise en page. Les panneaux donnent un peu plus de marge à leur contenu (12dp pour une carte et une carte du HUD, 15 en bas) pour que le texte ne touche jamais le cadre. La police de votre projet est conservée elle aussi.
Des emplacements rapides, un joystick et une puce dessinés par le skin arcade — des capuchons de touche brillants et un socle à quatre flèches
Les parties que dessine le skin arcade

Créez votre propre arcade

python3 addons/gohud/tools/new_theme.py cabinet --from arcade_light
# Modifiez themes/palettes/cabinet.json — les couleurs *_vivid sont les peintures —, puis :
python3 addons/gohud/tools/make_theme.py cabinet
GoUi.use_preset(&"cabinet")