Une icône s'appelle par son nom
Un widget ne garde jamais d'image. Il demande un nom, et le jeu d'icônes en service décide de ce qui est dessiné — changez de jeu et toutes les icônes changent sans toucher une ligne de code.
GoStyle.icon_button(GoIconSet.SETTINGS, open_settings) # a button
slot.icon_name = GoGameIcons.BACKPACK # a quick slot
var mark := GoUi.icons().node(&"cloud_rain", 24) # a bare Control, any size
GoUi.icons() est le jeu en service. Un nom qu'il ne peut pas dessiner devient une boîte vide qui garde sa place, avec un avertissement dans les builds de débogage : une icône manquante ne décale jamais une ligne.
Trouver une icône
Tous les dessins livrés avec gohud. Cherchez par nom ou par ce qu'ils montrent, restreignez à un jeu ou à un groupe, et choisissez une icône pour copier son nom.
Les noms et les mots de recherche restent en anglais dans toutes les langues — c'est ce que vous tapez dans le code.
Quatre jeux, une seule recherche
Chaque jeu répond au même appel. Les grands s'ajoutent par-dessus le jeu en service.
| Jeu | Noms | Constantes | L'activer |
|---|---|---|---|
| Par défaut | 84 | GoIconSet | Toujours actif |
| Médiéval | 16 gravés | — | GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) |
| Jeux vidéo | 187 | GoGameIcons | GoUi.add_icons(GoGameIcons.icon_set()) |
| Bibliothèque | 1 000 | GoIconLibrary | GoUi.add_icons(GoIconLibrary.icon_set()) |
GoUi.add_icons(GoIconLibrary.icon_set()) # the library — and the game set under it
GoUi.add_icons(GoGameIcons.icon_set()) # or the game set alone
La bibliothèque se replie sur le jeu « Jeux vidéo », et celui-ci sur le jeu par défaut : une ligne rend donc 1 271 noms dessinables. Un jeu garde ses dessins sous forme de chemins et ne lit un fichier que la première fois que son nom est dessiné : ajouter la bibliothèque lit une table de chemins (environ 30 ms sur un ordinateur), pas 1 000 textures.
addons/gohud/icons/ ; l'option par défaut « exporter toutes les ressources » n'a besoin de rien.Comment un nom est trouvé
Un seul ordre pour tous les jeux, pour savoir quel dessin l'emporte.
- D'abord les dessins propres de chaque jeu — le jeu en service, puis chaque jeu ajouté, puis leurs replis, niveau par niveau. Le dessin propre d'un jeu est une texture, un chemin ou un glyphe de police d'icônes.
- Si personne ne l'a dessiné, un alias est essayé :
gearmène àsettings,xàclose. Un seul saut. - Toujours rien : une boîte vide qui garde sa place.
C'est grâce à cet ordre que l'épée gravée du préréglage médiéval reste au-dessus quand vous ajoutez la bibliothèque — son dessin propre est trouvé avant le repli de quiconque.
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
GoUi.add_icons(GoIconLibrary.icon_set())
GoUi.icons().texture(&"sword") # the medieval engraving — its own drawing comes first
GoUi.icons().texture(&"rocket") # from the game set
GoUi.icons().canonical(&"gear") # &"settings" — an alias
Préréglages, votre jeu et jeux ajoutés
Trois endroits décident de ce qui est dessiné.
| Appel | Ce qu'il fait |
|---|---|
GoUi.use_preset(…) | Thème, skin et jeu d'icônes d'un coup. Vide config.icons, garde config.extra_icons. |
GoUi.config.icons = my_set | Remplace le jeu d'icônes du préréglage par le vôtre. |
GoUi.add_icons(set) | Ajoute un jeu consulté après celui en service. Il survit aux changements de préréglage. |
Vos propres dessins
Remplacez quelques noms, ajoutez un dossier entier ou branchez une police d'icônes — le code appelant ne change pas.
# Override a few names — everything else still comes from the set in use
var mine := GoIconSet.new()
mine.fallback = GoUi.icons()
mine.textures = {GoIconSet.CLOSE: preload("res://art/close.svg")}
GoUi.config.icons = mine
# A folder of drawings — file name = icon name, each read when first drawn
GoUi.config.icons = GoIconSet.from_folder("res://art/icons", GoUi.icons())
- Dessinez sur une grille de 24×24 avec un trait blanc. La couleur vient de
modulate, qui ne peut qu'assombrir — un dessin noir reste noir sur tous les thèmes. - Importez les SVG en
DPITexturepour qu'ils restent nets dans une case d'inventaire de 64 dp. - Les icônes ne se retournent jamais dans les langues écrites de droite à gauche. Seules
backetforwardchangent de sens, et vous les choisissez par leur nom. - Une police d'icônes fonctionne aussi : remplissez
fontetcodepoints. Rien d'autre ne change.
Noms, groupes et recherche
Les règles que suivent les jeux fournis, et les appels qui trouvent un nom.
- lower_snake_case, d'abord la chose dessinée, puis son état :
volume_off,battery_charging,arrow_bar_left. - Pas de préfixe de groupe. Les groupes sont des données : un nom reste le même quel que soit son classement.
- Les noms de la bibliothèque sont ceux de Tabler avec des tirets bas :
cloud-rainsur tabler.io devientcloud_rainici. Les noms Tabler des dessins que gohud avait déjà y mènent comme alias (shopping_cart→cart). - Un synonyme est un alias, jamais un second dessin.
search()
var icons := GoUi.icons()
icons.search("arrow left", 5) # best matches first: back, arrow_bar_left …
icons.search("rain") # cloud_rain, then drawings tagged "rain"
group_names() · names_in_group()
icons.group_names() # every group key, in lookup order
icons.names_in_group(&"weather") # one group, in display order — every set's share of it
icons.group_title(&"weather") # "Weather & sky"
canonical() · has_icon()
icons.canonical(&"gear") # &"settings"
icons.canonical(&"treasure_chest") # &"chest" — Tabler's name for a game drawing
icons.has_icon(&"cloud_rain") # true once the library is added — nothing is loaded to answer
D'où viennent les dessins
Tout est sous MIT. Les avis voyagent dans le ZIP sous le nom THIRD_PARTY_NOTICES.md.
| Jeu | Origine | Licence |
|---|---|---|
| Par défaut | Dessinés pour gohud | MIT |
| Médiéval | Dessinés pour gohud | MIT |
| Jeux vidéo | 171 de Tabler Icons 3.46.0, 16 dessinés pour gohud | MIT |
| Bibliothèque | Tabler Icons 3.46.0 | MIT |
Si vous branchez les icônes de quelqu'un d'autre, indiquez leur origine dans GoIconSet.attribution — et gardez les polices d'icônes commerciales dans votre jeu, pas dans un fork que vous publiez.