Un'icona si richiama per nome
I widget non tengono mai un'immagine. Chiedono un nome, e il set di icone in uso decide cosa disegnare — cambia set e tutte le icone cambiano senza toccare una riga di codice.
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() è il set in uso. Un nome che non sa disegnare diventa una casella vuota che mantiene il suo spazio, con un avviso nelle build di debug, così un'icona mancante non sposta mai una riga.
Trova un'icona
Tutti i disegni inclusi in gohud. Cerca per nome o per ciò che mostrano, restringi a un set o a un gruppo e scegli un'icona per copiarne il nome.
Nomi e parole di ricerca restano in inglese in ogni lingua — sono ciò che scrivi nel codice.
Quattro set, una sola ricerca
Ogni set risponde alla stessa chiamata. Quelli grandi si aggiungono sopra al set in uso.
| Set | Nomi | Costanti | Come attivarlo |
|---|---|---|---|
| Predefinito | 84 | GoIconSet | Sempre attivo |
| Medievale | 16 incisi | — | GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) |
| Gioco | 187 | GoGameIcons | GoUi.add_icons(GoGameIcons.icon_set()) |
| Libreria | 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 libreria ricade sul set da gioco e questo sul predefinito, quindi una riga rende disegnabili 1.271 nomi. Un set tiene i suoi disegni come percorsi e legge un file solo la prima volta che il nome viene disegnato: aggiungere la libreria legge una tabella di percorsi (circa 30 ms su un computer), non 1.000 texture.
addons/gohud/icons/; l'impostazione predefinita «esporta tutte le risorse» non richiede nulla.Come si trova un nome
Un solo ordine per tutti i set, così sai quale disegno vince.
- Prima i disegni propri di ogni set — il set in uso, poi ogni set aggiunto, poi i loro fallback, livello per livello. Il disegno proprio di un set è una texture, un percorso o un glifo di un font di icone.
- Se nessuno lo ha disegnato, si prova un alias:
gearporta asettings,xaclose. Un solo salto. - Ancora niente: una casella vuota che mantiene il suo spazio.
È per quest'ordine che la spada incisa del preset medievale resta in cima quando aggiungi la libreria — il suo disegno proprio si trova prima del fallback di chiunque.
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
Preset, il tuo set e set aggiuntivi
Tre punti decidono cosa viene disegnato.
| Chiamata | Cosa fa |
|---|---|
GoUi.use_preset(…) | Tema, skin e set di icone in un colpo. Svuota config.icons, mantiene config.extra_icons. |
GoUi.config.icons = my_set | Sostituisce il set di icone del preset con il tuo. |
GoUi.add_icons(set) | Aggiunge un set consultato dopo quello in uso. Sopravvive ai cambi di preset. |
I tuoi disegni
Sovrascrivi qualche nome, aggiungi un'intera cartella o collega un font di icone — il codice chiamante non cambia.
# 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())
- Disegna su una griglia 24×24 con tratto bianco. Il colore arriva da
modulate, che sa solo scurire — un disegno nero resta nero con qualsiasi tema. - Importa gli SVG come
DPITextureperché restino nitidi in una casella d'inventario da 64 dp. - Le icone non si specchiano mai nelle lingue scritte da destra a sinistra. Cambiano direzione solo
backeforward, e quelle le scegli per nome. - Va bene anche un font di icone: compila
fontecodepoints. Nient'altro cambia.
Nomi, gruppi e ricerca
Le regole seguite dai set inclusi e le chiamate che trovano un nome.
- lower_snake_case, prima la cosa disegnata e in fondo il suo stato:
volume_off,battery_charging,arrow_bar_left. - Niente prefissi di gruppo. I gruppi sono dati, quindi un nome resta lo stesso ovunque sia archiviato.
- I nomi della libreria sono i nomi di Tabler con i trattini bassi:
cloud-rainsu tabler.io qui ècloud_rain. I nomi Tabler dei disegni che gohud aveva già portano a quelli come alias (shopping_cart→cart). - Un sinonimo è un alias, mai un secondo disegno.
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
Da dove vengono i disegni
Tutto è MIT. Gli avvisi viaggiano nello ZIP come THIRD_PARTY_NOTICES.md.
| Set | Origine | Licenza |
|---|---|---|
| Predefinito | Disegnati per gohud | MIT |
| Medievale | Disegnati per gohud | MIT |
| Gioco | 171 da Tabler Icons 3.46.0, 16 disegnati per gohud | MIT |
| Libreria | Tabler Icons 3.46.0 | MIT |
Se colleghi icone di qualcun altro, scrivine l'origine in GoIconSet.attribution — e tieni i font di icone commerciali dentro il tuo gioco, non in un fork che pubblichi.