Um ícone é chamado pelo nome
Os widgets nunca guardam uma imagem. Eles pedem um nome, e o conjunto de ícones em uso decide o que é desenhado — troque o conjunto e todos os ícones mudam sem tocar em uma linha de código.
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() é o conjunto em uso. Um nome que ele não consegue desenhar vira uma caixa vazia que mantém o espaço, com um aviso nas builds de depuração, então um ícone ausente nunca desloca uma linha.
Encontrar um ícone
Todos os desenhos que o gohud traz. Pesquise pelo nome ou pelo que mostram, filtre por conjunto ou grupo e escolha um ícone para copiar o nome.
Os nomes e as palavras de busca ficam em inglês em todos os idiomas — são o que você digita no código.
Quatro conjuntos, uma única busca
Todo conjunto responde à mesma chamada. Os grandes são adicionados por cima do conjunto em uso.
| Conjunto | Nomes | Constantes | Como ativar |
|---|---|---|---|
| Padrão | 84 | GoIconSet | Sempre ativo |
| Medieval | 16 gravados | — | GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) |
| Jogo | 187 | GoGameIcons | GoUi.add_icons(GoGameIcons.icon_set()) |
| Biblioteca | 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
A biblioteca recorre ao conjunto de jogo, e este ao padrão, então uma linha torna 1.271 nomes desenháveis. Um conjunto guarda os desenhos como caminhos e só lê um arquivo na primeira vez que o nome é desenhado: adicionar a biblioteca lê uma tabela de caminhos (cerca de 30 ms num desktop), não 1.000 texturas.
addons/gohud/icons/; o padrão “exportar todos os recursos” não precisa de nada.Como um nome é encontrado
Uma única ordem para todos os conjuntos, para você saber qual desenho vence.
- Primeiro os desenhos próprios de cada conjunto — o conjunto em uso, depois cada conjunto adicionado e então os fallbacks deles, nível por nível. O desenho próprio de um conjunto é uma textura, um caminho ou um glifo de fonte de ícones.
- Se ninguém o desenhou, tenta-se um alias:
gearleva asettings,xaclose. Só um salto. - Ainda nada: uma caixa vazia que mantém o espaço.
É por essa ordem que a espada gravada do preset medieval continua no topo quando você adiciona a biblioteca — o desenho próprio dele é encontrado antes do fallback de qualquer um.
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
Presets, o seu conjunto e conjuntos extras
Três lugares decidem o que é desenhado.
| Chamada | O que faz |
|---|---|
GoUi.use_preset(…) | Tema, skin e conjunto de ícones de uma vez. Limpa config.icons e mantém config.extra_icons. |
GoUi.config.icons = my_set | Troca o conjunto de ícones do preset pelo seu. |
GoUi.add_icons(set) | Adiciona um conjunto consultado depois do que está em uso. Sobrevive às trocas de preset. |
Seus próprios desenhos
Substitua alguns nomes, adicione uma pasta inteira ou conecte uma fonte de ícones — o código que chama continua igual.
# 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())
- Desenhe numa grade de 24×24 com traço branco. A cor vem de
modulate, que só consegue escurecer — um desenho preto continua preto em qualquer tema. - Importe os SVG como
DPITexturepara que fiquem nítidos num espaço de inventário de 64 dp. - Os ícones nunca espelham em idiomas da direita para a esquerda. Só
backeforwardmudam de direção, e você escolhe esses pelo nome. - Uma fonte de ícones também funciona: preencha
fontecodepoints. Nada mais muda.
Nomes, grupos e busca
As regras que os conjuntos incluídos seguem e as chamadas que encontram um nome.
- lower_snake_case, primeiro o que é desenhado e por último o estado:
volume_off,battery_charging,arrow_bar_left. - Sem prefixos de grupo. Grupos são dados, então um nome continua o mesmo onde quer que esteja arquivado.
- Os nomes da biblioteca são os nomes do Tabler com sublinhados:
cloud-rainno tabler.io écloud_rainaqui. Os nomes do Tabler para desenhos que o gohud já tinha levam a eles como aliases (shopping_cart→cart). - Um sinônimo é um alias, nunca um segundo desenho.
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
De onde vêm os desenhos
Tudo é MIT. Os avisos viajam no ZIP como THIRD_PARTY_NOTICES.md.
| Conjunto | Origem | Licença |
|---|---|---|
| Padrão | Desenhados para o gohud | MIT |
| Medieval | Desenhados para o gohud | MIT |
| Jogo | 171 do Tabler Icons 3.46.0, 16 desenhados para o gohud | MIT |
| Biblioteca | Tabler Icons 3.46.0 | MIT |
Se você conectar ícones de outra pessoa, escreva a origem em GoIconSet.attribution — e mantenha fontes de ícones comerciais dentro do seu jogo, não num fork que você publica.