gohud

Três camadas

← Temas

Um preset empacota as três. Os campos que você deixa vazios caem para os valores padrão.

CamadaDecideComo você muda
Theme Cores, tamanhos, escala do texto e a forma de tudo que a engine desenha — painéis de botão, campos, abas, a arte dos interruptores Escreva um .tres ou gere um com tools/make_theme.py
GoSkin A forma de tudo que o código desenha — o joystick, as faces dos slots rápidos, o anel do coach mark, chips, esqueletos de carregamento, divisores, títulos de seção Crie uma subclasse e sobrescreva só os métodos que te interessam
GoIconSet Ícones por nome — 84 desenhos padrão, ou os 16 desenhos gravados do conjunto medieval por cima deles. Um pacote de texturas ou uma fonte de ícones; o código que chama é idêntico nos dois casos Forneça um conjunto, ou sobrescreva apenas alguns nomes
Por que um Theme sozinho não basta. Arredondado é o único canto que o StyleBoxFlat tem — zere o raio e você tem um ângulo reto; não existe nada entre os dois. Cantos cortados na diagonal, uma única borda mais grossa, um brilho externo: a engine não desenha nenhum deles. E o joystick e o coach mark são desenhados em _draw(), onde um tema não alcança de jeito nenhum.

Escolhendo um

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

Essa única linha troca tema, skin e ícones. Pelo editor, use Configurações do Projeto → Gohud → Theme → Preset; por um recurso de configuração, GoConfig.preset.

Mantendo um campo só seu

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # seus ícones, todo o resto do preset

Definir theme, skin ou icons explicitamente vence o preset.

Os catorze presets embutidos

PresetPainéisSkin · ícones
default_dark · default_lightPainéis StyleBoxFlat arredondados sobre uma escala graduada de sombras; os botões primários sobem e afundam ao serem pressionadosGoSkin · 84 ícones padrão
scifi_dark · scifi_lightPainéis GoStyleBoxCut chanfrados com borda e brilho em neon; marcas de foco em GoStyleBoxBracketGoSkinSciFi — joystick hexagonal · ícones padrão
medieval_dark · medieval_lightMolduras forjadas GoStyleBoxMedieval — ferro e couro, ou pergaminho — com rebites e ornamentos de canto nos menusGoSkinMedieval · 16 ícones gravados sobre os padrão
material_light · material_dark NovoMaterial 3 Expressive para telas de apps — botões em pílula de 40dp dentro da área de toque de 48dp, diálogos de 28dp, cartões preenchidos, campos com contorno, o controle deslizante Expressive; os componentes de app (barra de navegação, barra superior, FAB, barra de busca, chips, progresso, seletor de data) seguem os tokens de componente do M3GoSkinMaterial · ícones padrão
kids_light · kids_dark NovoPara crianças — a caixa de brinquedos: contornos grossos e uma borda sólida sob cada tecla, que afunda ao ser pressionada; campos de texto rebaixados, abas de bolha, barras de gelatina; cada tipo de controle com sua própria cor de giz de cera, slots rápidos de bala, emblemas de adesivo, um joystick arco-íris e gráficos coloridos. Os tamanhos e a fonte do projeto continuam os mesmos.GoSkinKids · ícones padrão
arcade_light · arcade_dark NovoUm fliperama desenhado pelo GoStyleBoxArcade: cada tecla pintada com um degradê de cima para baixo, um brilho branco e uma borda que afunda ao ser pressionada, dentro de um contorno de tinta azul-marinho, com o rótulo branco contornado de tinta — primário verde, teclas azuis, perigo em vermelho, teclas pequenas lavanda. Painéis grossos com uma moldura colorida em volta de um fundo claro; uma faixa de título dourada e uma tecla de fechar vermelha e redonda nas janelas.GoSkinArcade · ícones padrão
comic_light · comic_dark NovoQuadros de quadrinhos desenhados pelo GoStyleBoxComic: um contorno grosso de tinta e uma sombra dura em cada face, que some quando a face é pressionada; interruptores, caixas de seleção e alças de controle deslizante com contorno de tinta, e uma legenda de título amarela nas janelas. A largura do contorno, o tamanho da sombra e se as sombras aparecem ou não são configurações do GoConfig.GoSkinComic · ícones padrão

Os catorze, lado a lado

A mesma tela da galeria mudando só o nome do preset — nenhuma linha do código dos widgets muda. Cada imagem é um celular na vertical, em 390×844.

A galeria de widgets do gohud no preset default_dark
default_dark
A galeria de widgets do gohud no preset default_light
default_light
A galeria de widgets do gohud no preset scifi_dark
scifi_dark
A galeria de widgets do gohud no preset scifi_light
scifi_light
A galeria de widgets do gohud no preset medieval_dark
medieval_dark
A galeria de widgets do gohud no preset medieval_light
medieval_light
A galeria de widgets do gohud no preset material_light
material_light
A galeria de widgets do gohud no preset material_dark
material_dark
A galeria de widgets do gohud no preset kids_light
kids_light
A galeria de widgets do gohud no preset kids_dark
kids_dark
A galeria de widgets do gohud no preset comic_light
comic_light
A galeria de widgets do gohud no preset comic_dark
comic_dark
A galeria de widgets do gohud no preset arcade_light
arcade_light
A galeria de widgets do gohud no preset arcade_dark
arcade_dark

Medieval: ferro, couro e pergaminho

O medieval_dark combina ferro escuro e couro com ouro envelhecido. O medieval_light usa pergaminho e tinta. Os dois usam o GoSkinMedieval, os widgets já existentes e 16 ícones originais com detalhes de gravação; os ícones de navegação voltam ao conjunto original.

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

Escolha o preset antes de criar a sua UI. Sobrescritas explícitas de GoConfig.theme, skin ou icons continuam tendo precedência. Abra res://addons/gohud/examples/medieval/medieval.tscn e pressione F6 para ver uma ficha de personagem, uma bolsa e um diário de missões funcionando. Os botões dele alternam entre as variantes e abrem os detalhes dos itens.

Interfaces de personagem, inventário e missões do Medieval Ferro
Ferro e couro
Interfaces de personagem, inventário e missões do Medieval Pergaminho
Pergaminho e tinta

As molduras de menu têm um rebite e um pequeno ornamento de canto; o HUD sempre visível mantém uma borda discreta. HP, mana e estamina usam preenchimentos vermelho, azul e verde-oliva. O Cinzel fica restrito a títulos e subtítulos; o texto corrido mantém a fonte do projeto hospedeiro ou a padrão. A fonte que acompanha o pacote traz sua licença em assets/fonts/cinzel/OFL.txt.

O conjunto gravado redesenha bag, book, box, coin, crown, flag, heart, key, map, potion, shield, star, sword e user, e acrescenta scroll e seal. Todo outro nome volta ao conjunto padrão, então close e settings mantêm seus desenhos padrão em qualquer preset. O Cinzel cobre a escrita latina; dê aos títulos localizados uma fonte própria através de shape.fonts.

O que a suíte verifica nas duas variantes. A skin medieval é selecionada; os painéis de menu e de HUD são molduras forjadas, com o ornamento só nos menus; os títulos usam Cinzel enquanto o texto corrido mantém a fonte herdada; os ícones gravados são importados como DPITexture; um slot rápido de verdade usa a skin; mudar os dials de uma cópia da skin chega ao slot sem tocar no preset; e voltar atrás restaura a geometria padrão e a do sci-fi.

Crie um reino só seu

python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Edite themes/palettes/kingdom.json e depois:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# Em GDScript, antes de criar os widgets:
GoUi.use_preset(&"kingdom")

Temas em JSON podem herdar de outros temas em JSON. Os valores omitidos mantêm as configurações do pai; herança circular é rejeitada. O preset gerado mantém o conjunto de ícones do pai.

ConfiguraçãoEfeito
shape.material0: ferro · 1: couro · 2: pergaminho. Controla as marcas da superfície.
shape.grain_alphaOpacidade da textura. Use 0 para uma superfície limpa.
shape.ornament_scale · shape.bevel_strengthTamanho do ornamento de canto do menu e intensidade do realce do bisel.
shape.fontsMapeia os papéis title, subtitle, caption, body e button para arquivos de fonte res:// internos ao add-on. Papéis omitidos mantêm a fonte herdada.
skin.dialsRaio do slot rápido, visibilidade dos rebites, textura e realce. A tabela completa abaixo lista cada dial.

Material 3: um visual para telas de apps Novo

O material_light e o material_dark trazem o Material 3 Expressive para o gohud — as formas, os tamanhos e a tipografia dos componentes do M3, com cada número tirado do conjunto oficial de tokens do M3 (material-web, tokens/versions/latest). Use-os onde uma tela deve parecer um app, e não um menu de jogo: lojas, caixas de entrada, páginas de conta e de configurações, rankings, um app companheiro.

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
# Ou: GoUi.use_preset(GoThemePresets.MATERIAL_DARK)
A galeria do gohud em material_light — botões em pílula, cartões preenchidos e campos com contorno
material_light
A galeria do gohud em material_dark
material_dark
Um diálogo de confirmação em material_light — cantos de 28dp e botões em pílula sobre um jogo
GoDialogs · material_light
Um diálogo de confirmação em material_dark sobre um jogo
GoDialogs · material_dark

O que muda

ParteNo Material 3
BotõesPílulas (o canto inteiro). A placa tem 40dp de altura, centralizada na área de toque de 48dp, então a área de toque não encolhe; a placa de um botão compacto tem 32dp. Os rótulos usam Roboto com peso 500.
Diálogos e folhasCantos de 28dp (extragrandes), respiro de 24dp e um título de 24sp — GoDialogs, GoSurface, GoSheet e todo popup construído sobre eles.
CartõesCartões preenchidos com cantos de 12dp e respiro de 16dp.
Campos e controles deslizantesCampos de texto com contorno; o controle deslizante Expressive com sua alça alta.
Chips e segmentosCantos de 8dp (pequenos).
Componentes de appGoNavBar, GoAppBar, GoFab, GoSearchBar, os chips, GoProgress e GoDatePicker seguem os tokens de componente do M3.
TipografiaA Roboto que acompanha o pacote, para títulos, subtítulos, legendas e botões. O texto corrido mantém a fonte do seu projeto, então coreano, japonês, chinês ou árabe continuam aparecendo.
OpacidadeTodo painel é opaco — as superfícies do M3 são sólidas. (Os painéis padrão, sci-fi e medievais são 80% opacos, para o jogo aparecer por trás.)
SkinGoSkinMaterial: o painel lateral é a folha lateral modal do M3, a face do console é a barra de ferramentas flutuante do M3, e os banners ficam sobre surface_container_low.
Onde a especificação cede à legibilidade. O M3 esmaece um rótulo desativado para 38%; o gohud o mantém em 4.5:1 para que ele continue legível. Os snackbars mantêm uma placa clara, porque a cor do texto deles é um token que o widget escolhe — uma placa invertida poria texto escuro sobre fundo escuro. tools/check_contrast.py mede os dois visuais como todos os outros.

A Roboto está sob a SIL Open Font License 1.1 (assets/fonts/roboto/OFL.txt) e é usada apenas pelos presets Material.

Infantil: a caixa de brinquedos Novo

O kids_light (creme e pêssego com um primário uva) e o kids_dark (fundo mirtilo, primário amarelo-sol, pílulas menta) são um visual feito para jogos infantis e apps educativos — gorducho, vivo e fofinho, o tipo de coisa que um dedinho quer apertar.

GoUi.use_preset(&"kids_light")
# Ou: GoUi.use_preset(&"kids_dark")
A galeria do gohud em kids_light — botões de bala de gelatina em cores de giz de cera
kids_light
A galeria do gohud em kids_dark — a caixa de brinquedos sobre uma página azul-noite
kids_dark
Um diálogo de confirmação em kids_light — uma faixa de título ensolarada e um botão de fechar redondo de bala
GoDialogs · kids_light
Um diálogo de confirmação em kids_dark — uma faixa de título menta e um botão de fechar de bala
GoDialogs · kids_dark

O que muda

ParteNos visuais infantis
Todas as facesUma bala de gelatina, desenhada pelo GoStyleBoxJelly: um contorno grosso, uma borda sólida embaixo de tudo o que se pressiona, um corpo mais claro em cima e mais intenso embaixo, e um brilho branco no canto superior esquerdo. Teclas, linhas de lista, títulos dobráveis, campos, barras, controles deslizantes e painéis, todos usam esse visual.
Ao pressionarA borda some e a face afunda no lugar; depois vem uma amassada de gelatina — larga e achatada por um instante, e então um retorno elástico. Funciona em todo botão que o gohud cria; reduce_motion desliga o efeito.
Campos, abas, barrasUm campo de texto é a mesma gelatina virada para dentro — um poço rebaixado. As abas são bolhas, e as barras têm um brilho de gelatina.
CorCada tipo de controle com sua própria cor de giz de cera, escolhida pelo mesmo gerador de todos os visuais, então todas as verificações de contraste continuam valendo.
JanelasUma faixa ensolarada (menta à noite) atrás do título de uma janela — o título encolhe, até 15, para caber em uma linha — e um botão de fechar redondo de bala, na cor de giz de perigo, com um X branco.
Partes da skinGoSkinKids: os slots rápidos são blocos de bala que afundam durante o cooldown, os emblemas são adesivos, os chips e a pílula de navegação são gelatinas pequenas, os avatares são balas redondas, o joystick é um arco-íris, os gráficos usam giz de cera, e os alertas e avisos são bilhetes de adesivo com uma borda sólida.
OpacidadePainéis, cartões, avisos e popups são opacos.
Nenhum tamanho muda. O contorno e a borda sólida são desenhados dentro do retângulo de cada controle, e cada face mantém o respiro que o tema lhe deu; assim, uma tela montada em outro visual mantém o layout, e um projeto hospedeiro que fixa os próprios tamanhos mede as mesmas partes. A fonte do seu projeto também é mantida, então escritas não latinas continuam aparecendo.
Slots rápidos, um joystick e um chip em cada skin — padrão, infantil, Material, medieval e sci-fi
As partes que uma skin desenha — a linha infantil é a segunda

Crie a sua própria caixa de brinquedos

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

Quadrinhos: tinta forte Novo

O comic_light (painéis brancos sobre uma página creme de papel, um primário cobalto) e o comic_dark (painéis ardósia sobre uma página noturna, contornos creme, um primário amarelo) desenham cada face como um quadro de história em quadrinhos — um contorno grosso de tinta com uma sombra dura atrás.

GoUi.use_preset(&"comic_light")
# Ou: GoUi.use_preset(&"comic_dark")
A galeria do gohud em comic_light — teclas, linhas e barras com contorno de tinta e sombras duras
comic_light
A galeria do gohud em comic_dark — tinta creme sobre uma página noturna
comic_dark
Um diálogo de confirmação em comic_light — uma legenda de título amarela e um botão de fechar redondo com contorno de tinta
GoDialogs · comic_light
Um diálogo de confirmação em comic_dark — uma legenda amarela sobre um cartão ardósia
GoDialogs · comic_dark

O que muda

ParteNos visuais de quadrinhos
Todas as facesDesenhadas pelo GoStyleBoxComic: a cor da superfície dentro de um contorno grosso na cor da tinta, e uma sombra dura para baixo e para a direita. Teclas, linhas de lista, campos, abas, barras, controles deslizantes, painéis e popups, todos a usam.
Ao pressionarA sombra some e a face afunda no lugar.
ControlesInterruptores, caixas de seleção, botões de opção e alças dos controles deslizantes também ganham contorno de tinta, cada um com sua própria sombra pequena.
JanelasUma legenda amarela atrás do título de uma janela e um botão de fechar redondo com contorno de tinta.
Partes da skinGoSkinComic: slots rápidos, chips, emblemas, avatares, avisos, a barra de navegação, o FAB e as células de data ganham contorno de tinta; o botão do joystick projeta uma sombra; os gráficos usam cores primárias fortes.
OpacidadePainéis, cartões, avisos e popups são opacos; os cartões de HUD são 92% opacos.

Configurações de tinta e sombra

Três configurações do GoConfig mudam todas as faces de quadrinhos de uma vez. Nada é reconstruído — a tela se redesenha conforme você as define.

GoUi.config.comic_border_width = 2.0   # o contorno (dp) — 3 por padrão
GoUi.config.comic_shadow_size = 6.0    # a sombra (dp) — 4 por padrão
GoUi.config.comic_shadow = false       # nenhuma sombra em lugar nenhum

Um widget pode seguir o próprio caminho, diga a configuração o que disser:

GoStyle.comic_shadow(skip_button, false)     # este botão fica plano
GoStyle.comic_shadow(card, true, true)       # este cartão e tudo dentro dele mantêm a sombra
GoStyle.comic_border(title, 5.0)             # um contorno mais grosso neste aqui
Nenhum tamanho muda. O contorno e a sombra são desenhados dentro do retângulo de cada controle, e cada face mantém o respiro que o tema lhe deu; assim, uma tela montada em outro visual mantém o layout. A fonte do seu projeto também é mantida.
Slots rápidos, um joystick e um chip desenhados pela skin de quadrinhos
As partes que a skin de quadrinhos desenha

Crie os seus próprios quadrinhos

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

Arcade: teclas pintadas e painéis grossos Novo

O arcade_light (painéis brancos sobre uma página azul-céu) e o arcade_dark (painéis azul-marinho sobre uma página noturna) vestem cada tela como um fliperama: cada tecla é pintada — um degradê do topo claro à base mais intensa, um traço de brilho branco e uma borda que afunda ao ser pressionada, dentro de um contorno de tinta azul-marinho — e cada painel é grosso, uma moldura colorida em volta de um fundo claro.

GoUi.use_preset(&"arcade_light")
# Ou: GoUi.use_preset(&"arcade_dark")
A galeria do gohud em arcade_light — teclas pintadas de verde, azul, vermelho e lavanda e um painel de HUD com moldura azul sobre uma página azul-céu
arcade_light
A galeria do gohud em arcade_dark — as mesmas teclas vivas sobre uma página noturna
arcade_dark
Um diálogo de confirmação em arcade_light — uma faixa de título dourada, uma tecla de fechar vermelha e redonda e teclas pintadas de azul e verde sobre um painel emoldurado
GoDialogs · arcade_light
Um diálogo de confirmação em arcade_dark — uma faixa dourada sobre um painel azul-marinho
GoDialogs · arcade_dark

O que muda

ParteNos visuais arcade
TeclasDesenhadas pelo GoStyleBoxArcade: um corpo em degradê, um brilho branco no canto superior esquerdo, uma borda mais escura e um contorno de tinta azul-marinho. A tecla primária é verde; as teclas normais e a aba escolhida, azuis; as de perigo, coral e vermelhas; as teclas pequenas e as outras abas, lavanda.
RótulosBrancos com contorno de tinta em cada tecla pintada. Cada cor é ajustada até que esse rótulo se leia em qualquer altura do seu degradê — 4,6:1 ou mais, contando o contorno como parte da letra, como faz a WCAG.
Ao pressionarA borda some, a tecla afunda no lugar e volta a saltar.
PainéisPainéis, cartões, cartões de HUD e popups são grossos: uma moldura colorida (6dp em volta de uma janela, 4 em volta de um cartão ou de um cartão de HUD, 3 em volta de um menu ou de um aviso) com brilho e borda próprios, em volta de um fundo claro com uma linha de tinta. O respiro deles cresce um pouco para comportá-la, então o texto nunca encosta na moldura.
Campos e barrasCampos de texto e sulcos de barra são fundos rebaixados; o preenchimento de uma barra é um tubo pintado e brilhante, no tom vivo da sua cor.
JanelasUma faixa dourada com um título branco contornado de tinta e uma tecla de fechar vermelha e redonda com um X branco.
Partes da skinGoSkinArcade: slots rápidos e chips são teclas, um slot em recarga acende um aro dourado, os emblemas são placas claras, os alertas ganham uma moldura da sua cor, o cartão escolhido acende um aro dourado, o FAB é uma tecla dourada e o joystick, uma base brilhante com quatro setas.
OpacidadePainéis, cartões, avisos e popups são opacos; os cartões de HUD são 94% opacos.

Pinte uma tecla com a própria cor

O tema pinta as teclas por tipo. Um menu em que cada tecla quer a sua própria cor as pinta uma a uma — a face ao passar o cursor fica um pouco mais clara, a pressionada um pouco mais escura, e a desativada continua apagada:

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)   # a moldura de um painel e todas as teclas dentro dele
O rótulo sempre se lê. Uma cor sobre a qual o rótulo branco não se leria é clareada ou escurecida até que se leia, então a cor que você passa é um ponto de partida. Nos outros visuais, arcade_paint() não faz nada.
As teclas mantêm o tamanho. A borda e o brilho são desenhados dentro do retângulo de cada tecla; assim, uma tela montada em outro visual mantém o layout. Os painéis dão um pouco mais de respiro ao conteúdo (12dp num cartão e num cartão de HUD, 15 embaixo) para que o texto nunca encoste na moldura. A fonte do seu projeto também é mantida.
Slots rápidos, um joystick e um chip desenhados pela skin arcade — teclas brilhantes e uma base com quatro setas
As partes que a skin arcade desenha

Crie o seu próprio arcade

python3 addons/gohud/tools/new_theme.py cabinet --from arcade_light
# Edite themes/palettes/cabinet.json — as cores *_vivid são as tintas — e depois:
python3 addons/gohud/tools/make_theme.py cabinet
GoUi.use_preset(&"cabinet")