gohud

Tres capas

← Temas

Un preajuste agrupa las tres. Los campos que dejes vacíos recurren a los valores predeterminados.

CapaDecideCómo se cambia
Theme Colores, tamaños, escala de texto y la forma de todo lo que dibuja el motor — paneles de botón, campos de entrada, pestañas, gráficos de los interruptores Escribe un .tres, o genera uno con tools/make_theme.py
GoSkin La forma de todo lo que dibuja el código — el joystick, las caras de las ranuras rápidas, el anillo de la marca guía, los chips, los esqueletos, los separadores, los encabezados de sección Créale una subclase y sobrescribe solo los métodos que te importen
GoIconSet Iconos por nombre — 84 dibujos predeterminados, o los 16 dibujos grabados del juego medieval por encima de ellos. Un paquete de texturas o una fuente de iconos; el código que los llama es idéntico en ambos casos Proporciona un juego completo, o sobrescribe solo unos pocos nombres
Por qué un Theme por sí solo no basta. Redondeada es la única esquina que tiene StyleBoxFlat — pon el radio a cero y obtienes un ángulo recto; no hay nada intermedio. Esquinas cortadas en diagonal, un único borde engrosado, un resplandor exterior: el motor no dibuja ninguno de ellos. Y el joystick y la marca guía se dibujan en _draw(), donde un tema no llega en absoluto.

Cómo elegir uno

GoUi.use_preset(GoThemePresets.SCIFI_DARK)

Esa única línea cambia el tema, el skin y los iconos. Desde el editor, usa Ajustes del proyecto → Gohud → Theme → Preset; desde un recurso de configuración, GoConfig.preset.

Cómo conservar un campo propio

GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons     # tus iconos, y del preajuste todo lo demás

Asignar theme, skin o icons de forma explícita tiene prioridad sobre el preajuste.

Los catorce preajustes incluidos

PreajustePanelesSkin · iconos
default_dark · default_lightPaneles StyleBoxFlat redondeados sobre una escala graduada de sombras; los botones primarios se elevan y se hunden al pulsarlosGoSkin · 84 iconos predeterminados
scifi_dark · scifi_lightPaneles GoStyleBoxCut achaflanados con borde de neón y resplandor; marcas de foco GoStyleBoxBracketGoSkinSciFi — joystick hexagonal · iconos predeterminados
medieval_dark · medieval_lightMarcos GoStyleBoxMedieval forjados — hierro y cuero, o pergamino — con remaches y ornamentos de esquina en los menúsGoSkinMedieval · 16 iconos grabados por encima de los predeterminados
material_light · material_dark NuevoMaterial 3 Expressive para pantallas de apps — botones en píldora de 40dp dentro del área táctil de 48dp, diálogos de 28dp, tarjetas rellenas, campos con contorno, el deslizador Expressive; los componentes de app (barra de navegación, barra superior, FAB, barra de búsqueda, chips, progreso, selector de fecha) siguen los tokens de componente de M3GoSkinMaterial · iconos predeterminados
kids_light · kids_dark NuevoPara niños — la caja de juguetes: contornos gruesos y un labio sólido bajo cada tecla, que se hunde al pulsarla; campos de texto hundidos, pestañas de burbuja, barras de gelatina; cada tipo de control con su propio color de crayón, ranuras rápidas de caramelo, insignias de pegatina, un joystick arcoíris y gráficos de crayón. Los tamaños y la fuente del proyecto no cambian.GoSkinKids · iconos predeterminados
arcade_light · arcade_dark NuevoUna máquina recreativa dibujada por GoStyleBoxArcade: cada tecla pintada con un degradado de arriba abajo, un brillo blanco y un labio que se hunde al pulsarla, dentro de un contorno de tinta azul marino, y con la etiqueta en blanco con contorno de tinta — primario verde, teclas azules, peligro en rojo, teclas pequeñas lavanda. Tableros gruesos con un marco de color alrededor de un fondo pálido; un estandarte de título dorado y una tecla de cerrar roja y redonda en las ventanas.GoSkinArcade · iconos predeterminados
comic_light · comic_dark NuevoViñetas de cómic dibujadas por GoStyleBoxComic: un contorno grueso de tinta y una sombra dura en cada cara, que desaparece al pulsarla; interruptores, casillas y tiradores de deslizador entintados, y un rótulo de título amarillo en las ventanas. El grosor del contorno, el tamaño de la sombra y si se muestran o no las sombras son ajustes de GoConfig.GoSkinComic · iconos predeterminados

Los catorce, uno al lado del otro

La misma pantalla de la galería cambiando solo el nombre del preajuste — no cambia ni una línea del código de los widgets. Cada imagen es un teléfono en vertical, a 390×844.

La galería de widgets de gohud con el preajuste default_dark
default_dark
La galería de widgets de gohud con el preajuste default_light
default_light
La galería de widgets de gohud con el preajuste scifi_dark
scifi_dark
La galería de widgets de gohud con el preajuste scifi_light
scifi_light
La galería de widgets de gohud con el preajuste medieval_dark
medieval_dark
La galería de widgets de gohud con el preajuste medieval_light
medieval_light
La galería de widgets de gohud con el preajuste material_light
material_light
La galería de widgets de gohud con el preajuste material_dark
material_dark
La galería de widgets de gohud con el preajuste kids_light
kids_light
La galería de widgets de gohud con el preajuste kids_dark
kids_dark
La galería de widgets de gohud con el preajuste comic_light
comic_light
La galería de widgets de gohud con el preajuste comic_dark
comic_dark
La galería de widgets de gohud con el preajuste arcade_light
arcade_light
La galería de widgets de gohud con el preajuste arcade_dark
arcade_dark

Medieval: hierro, cuero y pergamino

medieval_dark combina hierro y cuero oscuros con oro antiguo. medieval_light usa pergamino y tinta. Ambos usan GoSkinMedieval, los widgets existentes y 16 iconos originales con detalles de grabado; los iconos de navegación recurren al juego original.

GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
# O bien: GoUi.use_preset(GoThemePresets.MEDIEVAL_LIGHT)

Elige el preajuste antes de crear tu interfaz. Las sobrescrituras explícitas de GoConfig.theme, skin o icons siguen teniendo prioridad. Abre res://addons/gohud/examples/medieval/medieval.tscn y pulsa F6 para ver una hoja de personaje, un zurrón y un diario de misiones en funcionamiento. Sus botones alternan las variantes y abren el detalle de los objetos.

Interfaces medievales de hierro para personaje, inventario y misiones
Hierro y cuero
Interfaces medievales de pergamino para personaje, inventario y misiones
Pergamino y tinta

Los marcos de menú llevan un remache y un pequeño ornamento de esquina; el HUD siempre visible mantiene un borde discreto. La vida, el maná y la resistencia usan rellenos rojo, azul y oliva. Cinzel se limita a títulos y subtítulos; el texto del cuerpo conserva la fuente del proyecto anfitrión o la predeterminada. La fuente incluida trae su licencia en assets/fonts/cinzel/OFL.txt.

El juego grabado redibuja bag, book, box, coin, crown, flag, heart, key, map, potion, shield, star, sword y user, y añade scroll y seal. Cualquier otro nombre recurre al juego predeterminado, así que close y settings conservan sus dibujos predeterminados en todos los preajustes. Cinzel cubre el alfabeto latino; dale a los encabezados localizados una fuente propia a través de shape.fonts.

Qué verifica la batería de pruebas en ambas variantes. Que el skin medieval queda seleccionado; que los paneles de menú y de HUD son marcos forjados, con el ornamento solo en los menús; que los títulos usan Cinzel mientras el texto del cuerpo conserva la fuente heredada; que los iconos grabados se importan como DPITexture; que una ranura rápida real usa el skin; que cambiar los dials de un skin copiado llega a la ranura sin tocar el preajuste; y que al volver atrás se restaura la geometría predeterminada y la de ciencia ficción.

Crea un reino propio

python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Edita themes/palettes/kingdom.json y luego:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# En GDScript, antes de crear los widgets:
GoUi.use_preset(&"kingdom")

Los temas JSON pueden heredar de otros temas JSON. Los valores omitidos conservan los del padre; la herencia circular se rechaza. El preajuste generado conserva el juego de iconos de su padre.

AjusteEfecto
shape.material0: hierro · 1: cuero · 2: pergamino. Controla las marcas de la superficie.
shape.grain_alphaOpacidad de la textura. Usa 0 para una superficie limpia.
shape.ornament_scale · shape.bevel_strengthTamaño del ornamento de esquina del menú e intensidad del realce biselado.
shape.fontsAsigna los roles de título, subtítulo, leyenda, cuerpo y botón a archivos de fuente res:// locales del add-on. Los roles omitidos conservan su fuente heredada.
skin.dialsRadio de las ranuras rápidas, visibilidad de los remaches, grano y realce. La tabla completa de más abajo enumera cada dial.

Material 3: un aspecto para pantallas de apps Nuevo

material_light y material_dark llevan Material 3 Expressive a gohud — las formas, los tamaños y la tipografía de los componentes de M3, con cada número leído del conjunto oficial de tokens de M3 (material-web, tokens/versions/latest). Recurre a ellos cuando una pantalla deba sentirse como una app y no como el menú de un juego: tiendas, bandejas de entrada, páginas de cuenta y de ajustes, clasificaciones, una app complementaria.

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
# O bien: GoUi.use_preset(GoThemePresets.MATERIAL_DARK)
La galería de gohud en material_light — botones en píldora, tarjetas rellenas y campos con contorno
material_light
La galería de gohud en material_dark
material_dark
Un diálogo de confirmación en material_light — esquinas de 28dp y botones en píldora sobre un juego
GoDialogs · material_light
Un diálogo de confirmación en material_dark sobre un juego
GoDialogs · material_dark

Qué cambia

ParteEn Material 3
BotonesPíldoras (la esquina completa). La placa mide 40dp de alto y va centrada en el área táctil de 48dp, así que la zona de pulsación no se reduce; la placa de un botón compacto mide 32dp. Las etiquetas usan Roboto con peso 500.
Diálogos y hojasEsquinas de 28dp (extragrandes), relleno de 24dp y un titular de 24sp — GoDialogs, GoSurface, GoSheet y todas las ventanas emergentes construidas sobre ellos.
TarjetasTarjetas rellenas con esquinas de 12dp y relleno de 16dp.
Campos y deslizadoresCampos de texto con contorno; el deslizador Expressive con su tirador alto.
Chips y segmentosEsquinas de 8dp (pequeñas).
Componentes de appGoNavBar, GoAppBar, GoFab, GoSearchBar, los chips, GoProgress y GoDatePicker siguen los tokens de componente de M3.
TipografíaLa Roboto incluida para títulos, subtítulos, leyendas y botones. El texto del cuerpo conserva la fuente de tu proyecto, así que el coreano, el japonés, el chino o el árabe se siguen dibujando.
OpacidadTodos los paneles son opacos — las superficies de M3 son sólidas. (Los paneles predeterminados, de ciencia ficción y medievales son opacos al 80%, para que el juego se vea a través.)
SkinGoSkinMaterial: el panel lateral es la hoja lateral modal de M3, la cara de la consola es la barra de herramientas flotante de M3 y los banners se apoyan en surface_container_low.
Donde la especificación cede ante la legibilidad. M3 atenúa una etiqueta desactivada hasta el 38%; gohud la mantiene en 4.5:1 para que se pueda seguir leyendo. Los snackbars conservan una placa clara, porque el color de su texto es un token que elige el widget — una placa invertida pondría texto oscuro sobre fondo oscuro. tools/check_contrast.py mide ambos aspectos igual que todos los demás.

Roboto se distribuye bajo la SIL Open Font License 1.1 (assets/fonts/roboto/OFL.txt) y solo la usan los preajustes Material.

Infantil: la caja de juguetes Nuevo

kids_light (crema y melocotón con un primario uva) y kids_dark (fondo arándano, primario amarillo sol, píldoras menta) son un aspecto hecho para juegos infantiles y apps educativas — grueso, vivo y blandito, justo lo que un dedo pequeño quiere pulsar.

GoUi.use_preset(&"kids_light")
# O bien: GoUi.use_preset(&"kids_dark")
La galería de gohud en kids_light — botones de caramelo de gelatina en colores de crayón
kids_light
La galería de gohud en kids_dark — la caja de juguetes sobre una página azul noche
kids_dark
Un diálogo de confirmación en kids_light — una cinta de título soleada y un botón de cerrar redondo de caramelo
GoDialogs · kids_light
Un diálogo de confirmación en kids_dark — una cinta de título menta y un botón de cerrar de caramelo
GoDialogs · kids_dark

Qué cambia

ParteEn los aspectos infantiles
Todas las carasUn caramelo de gelatina, dibujado por GoStyleBoxJelly: un contorno grueso, un labio sólido bajo todo lo que se pulsa, un cuerpo más claro arriba y más intenso abajo, y un brillo blanco arriba a la izquierda. Lo llevan las teclas, las filas de lista, los títulos plegables, los campos, las barras, los deslizadores y los paneles.
Al pulsarEl labio desaparece y la cara se hunde en su sitio; luego llega un aplastamiento de gelatina — ancha y plana por un instante, y después un rebote elástico. Funciona en todos los botones que crea gohud; reduce_motion lo desactiva.
Campos, pestañas, barrasUn campo de texto es la misma gelatina vuelta hacia dentro — un pozo hundido. Las pestañas son burbujas y las barras tienen un brillo de gelatina.
ColorCada tipo de control con su propio color de crayón, elegido por el mismo generador que todos los aspectos, así que todas las comprobaciones de contraste se siguen cumpliendo.
VentanasUna cinta soleada (menta de noche) detrás del título de una ventana — el título se encoge, hasta 15, para caber en una línea — y un botón de cerrar redondo de caramelo en el crayón de peligro, con una cruz blanca.
Partes del skinGoSkinKids: las ranuras rápidas son bloques de caramelo que se hunden durante el enfriamiento, las insignias son pegatinas, los chips y la píldora de navegación son gelatinas pequeñas, los avatares son caramelos redondos, el joystick es un arcoíris, los gráficos usan crayones, y las alertas y los avisos son notas de pegatina con un borde sólido.
OpacidadLos paneles, las tarjetas, los avisos y las ventanas emergentes son opacos.
Sin cambios de tamaño. El contorno y el labio se dibujan dentro del rectángulo de cada control, y cada cara conserva el relleno que le dio el tema, así que una pantalla maquetada con otro aspecto conserva su disposición, y un proyecto anfitrión que fija sus propios tamaños mide las mismas piezas. También se conserva la fuente de tu proyecto, así que los alfabetos no latinos se siguen dibujando.
Ranuras rápidas, un joystick y un chip en cada skin — predeterminado, infantil, Material, medieval y ciencia ficción
Las partes que dibuja un skin — la fila infantil es la segunda

Crea tu propia caja de juguetes

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

Cómic: tinta gruesa Nuevo

comic_light (paneles blancos sobre una página color crema papel, un primario cobalto) y comic_dark (paneles pizarra sobre una página nocturna, contornos crema, un primario amarillo) dibujan cada cara como una viñeta de cómic — un contorno grueso de tinta con una sombra dura detrás.

GoUi.use_preset(&"comic_light")
# O bien: GoUi.use_preset(&"comic_dark")
La galería de gohud en comic_light — teclas, filas y barras entintadas con sombras duras
comic_light
La galería de gohud en comic_dark — tinta crema sobre una página nocturna
comic_dark
Un diálogo de confirmación en comic_light — un rótulo de título amarillo y un botón de cerrar redondo entintado
GoDialogs · comic_light
Un diálogo de confirmación en comic_dark — un rótulo amarillo sobre una tarjeta pizarra
GoDialogs · comic_dark

Qué cambia

ParteEn los aspectos de cómic
Todas las carasDibujadas por GoStyleBoxComic: el color de la superficie dentro de un contorno grueso del color de la tinta, y una sombra dura hacia abajo y a la derecha. La llevan las teclas, las filas de lista, los campos, las pestañas, las barras, los deslizadores, los paneles y las ventanas emergentes.
Al pulsarLa sombra desaparece y la cara se hunde en su sitio.
ControlesLos interruptores, las casillas, los botones de opción y los tiradores de los deslizadores también van entintados, cada uno con su propia sombra pequeña.
VentanasUn rótulo amarillo detrás del título de una ventana y un botón de cerrar redondo entintado.
Partes del skinGoSkinComic: las ranuras rápidas, los chips, las insignias, los avatares, los avisos, la barra de navegación, el FAB y las celdas de fecha van entintados; el pomo del joystick proyecta una sombra; los gráficos usan primarios intensos.
OpacidadLos paneles, las tarjetas, los avisos y las ventanas emergentes son opacos; las tarjetas del HUD son opacas al 92%.

Ajustes de tinta y sombra

Tres ajustes de GoConfig cambian todas las caras de cómic a la vez. No se reconstruye nada — la pantalla se redibuja en cuanto los cambias.

GoUi.config.comic_border_width = 2.0   # el contorno (dp) — 3 por defecto
GoUi.config.comic_shadow_size = 6.0    # la sombra (dp) — 4 por defecto
GoUi.config.comic_shadow = false       # sin sombras en ningún sitio

Un widget puede ir por su cuenta, diga lo que diga el ajuste:

GoStyle.comic_shadow(skip_button, false)     # este botón queda plano
GoStyle.comic_shadow(card, true, true)       # esta tarjeta y todo lo que contiene conservan su sombra
GoStyle.comic_border(title, 5.0)             # un contorno más grueso en este
Sin cambios de tamaño. El contorno y la sombra se dibujan dentro del rectángulo de cada control, y cada cara conserva el relleno que le dio el tema, así que una pantalla maquetada con otro aspecto conserva su disposición. También se conserva la fuente de tu proyecto.
Ranuras rápidas, un joystick y un chip dibujados por el skin de cómic
Las partes que dibuja el skin de cómic

Crea tu propio cómic

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

Arcade: teclas pintadas y tableros gruesos Nuevo

arcade_light (tableros blancos sobre una página azul cielo) y arcade_dark (tableros azul marino sobre una página nocturna) visten cada pantalla como una máquina recreativa: cada tecla va pintada — un degradado de una parte superior clara a una inferior más intensa, un trazo de brillo blanco y un labio que se hunde al pulsarla, dentro de un contorno de tinta azul marino — y cada tablero es grueso, un marco de color alrededor de un fondo pálido.

GoUi.use_preset(&"arcade_light")
# O bien: GoUi.use_preset(&"arcade_dark")
La galería de gohud en arcade_light — teclas pintadas en verde, azul, rojo y lavanda y un tablero del HUD con marco azul sobre una página azul cielo
arcade_light
La galería de gohud en arcade_dark — las mismas teclas vivas sobre una página nocturna
arcade_dark
Un diálogo de confirmación en arcade_light — un estandarte de título dorado, una tecla de cerrar roja y redonda y teclas pintadas en azul y verde sobre un tablero con marco
GoDialogs · arcade_light
Un diálogo de confirmación en arcade_dark — un estandarte dorado sobre un tablero azul marino
GoDialogs · arcade_dark

Qué cambia

ParteEn los aspectos arcade
TeclasDibujadas por GoStyleBoxArcade: un cuerpo en degradado, un brillo blanco en la esquina superior izquierda, un labio más intenso y un contorno de tinta azul marino. La tecla primaria es verde; las teclas normales y la pestaña elegida, azules; las de peligro, coral y rojas; las teclas pequeñas y las demás pestañas, lavanda.
EtiquetasBlancas con un contorno de tinta en cada tecla pintada. Cada pintura se ajusta hasta que esa etiqueta se lee en cualquier altura de su degradado — 4,6:1 o más, contando el contorno como parte de la letra, como hace la WCAG.
Al pulsarEl labio desaparece, la tecla se hunde en su sitio y vuelve a saltar.
TablerosLos paneles, las tarjetas, las tarjetas del HUD y las ventanas emergentes son gruesos: un marco de color (6dp alrededor de una ventana, 4 alrededor de una tarjeta o una tarjeta del HUD, 3 alrededor de un menú o un aviso) con su propio brillo y su propio labio, alrededor de un fondo pálido con una línea de tinta. Su relleno crece un poco para dejarle sitio, así que el texto nunca toca el marco.
Campos y barrasLos campos de texto y los surcos de las barras son fondos hundidos; el relleno de una barra es un tubo pintado con brillo, en el tono vivo de su color.
VentanasUn estandarte dorado con un título blanco con contorno de tinta y una tecla de cerrar roja y redonda con una cruz blanca.
Partes del skinGoSkinArcade: las ranuras rápidas y los chips son capuchones de tecla, una ranura en recarga enciende un borde dorado, las insignias son placas claras, las alertas llevan un marco de su color, la tarjeta elegida enciende un borde dorado, el FAB es una tecla dorada y el joystick, una base con brillo y cuatro flechas.
OpacidadLos paneles, las tarjetas, los avisos y las ventanas emergentes son opacos; las tarjetas del HUD son opacas al 94%.

Pinta una tecla con su propio color

El tema pinta las teclas según su tipo. Un menú en el que cada tecla quiere su propio color las pinta una a una — la cara al pasar el cursor sale un poco más clara, la pulsada un poco más intensa, y la desactivada sigue 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)   # el marco de un tablero y todas las teclas que contiene
La etiqueta siempre se lee. Una pintura sobre la que la etiqueta blanca no se leería se aclara o se intensifica hasta que se lee, así que el color que pasas es un punto de partida. Con los demás aspectos, arcade_paint() no hace nada.
Las teclas conservan su tamaño. El labio y el brillo se dibujan dentro del rectángulo de cada tecla, así que una pantalla maquetada con otro aspecto conserva su disposición. Los tableros dan un poco más de relleno a su contenido (12dp en una tarjeta y una tarjeta del HUD, 15 abajo) para que el texto nunca toque el marco. También se conserva la fuente de tu proyecto.
Ranuras rápidas, un joystick y un chip dibujados por el skin arcade — capuchones de tecla con brillo y una base con cuatro flechas
Las partes que dibuja el skin arcade

Crea tu propio arcade

python3 addons/gohud/tools/new_theme.py cabinet --from arcade_light
# Edita themes/palettes/cabinet.json — los colores *_vivid son las pinturas — y luego:
python3 addons/gohud/tools/make_theme.py cabinet
GoUi.use_preset(&"cabinet")