Popup, finestre di dialogo, sheet, schede, pannelli HUD, avvisi e snackbar disegnano la propria faccia all'80% di opacità. Il combattimento prosegue dietro una richiesta di conferma; la mappa si vede sotto lo sheet dell'inventario. In un gioco questa non è decorazione — è ciò che tiene il giocatore orientato. Un pannello del tutto opaco cancella il punto in cui si trovava nell'istante stesso in cui si apre una finestra.
modulate.a.
Cinque livelli, dal più specifico
| Ordine | Dove | Unità | Portata |
|---|---|---|---|
| ① | l'argomento in quella chiamata — surface.alpha, GoStyle.card(…, alpha) | rapporto 0.0–1.0 | una sola finestra |
| ② | GoConfig.container_alpha_overrides[kind] | rapporto 0.0–1.0 | un tipo di pannello, in tutto il progetto |
| ③ | GoConfig.metric_overrides[<kind>_alpha] | percentuale | progetti che tengono tutte le misure in un unico posto |
| ④ | GoConfig.container_alpha | rapporto 0.0–1.0 | tutti i pannelli in una volta sola |
| ⑤ | il GoHud/constants/<kind>_alpha del tema | percentuale | quel che decide l'aspetto — la fonte di verità |
Se non ne è impostato nessuno il valore è 100, quindi in un tema più vecchio non cambia nulla.
alpha vuole 0.0–1.0, le stesse unità di Color.a e modulate.a, e un
valore negativo significa "non impostato". L'unica eccezione sono le costanti del tema, perché una
costante di Theme non può contenere un float: quelle e il canale che le sovrascrive
(metric_overrides, che ne condivide i nomi e il tipo intero) si scrivono come
80. Nient'altro.
# Una sola finestra — una richiesta di conferma che non deve nascondere il combattimento dietro di sé
surface.alpha = 0.6
sheet.alpha = 0.7
dialogs.alpha = 0.9 # anche i campi @export sono rapporti
drawer.alpha = 0.7
GoPopover.open(slot, body, {"alpha": 0.9})
var glass := GoStyle.card(Color.TRANSPARENT, -1.0, -1.0, -1.0, 0.5)
# Per tipo — tieni l'HUD quasi opaco, perché il suo testo sta direttamente sopra il mondo
GoUi.config.container_alpha_overrides = {
GoTheme.BOX_PANEL: 0.7, # finestre di dialogo e sheet possono respirare
GoTheme.BOX_HUD: 0.95,
}
GoUi.refresh() # ridisegna i widget già aperti
# Tutto il progetto — un mondo affollato rivuole i suoi pannelli opachi
GoUi.config.container_alpha = 1.0
GoUi.refresh()
GoUi.surface_alpha(GoTheme.BOX_PANEL) # il rapporto risolto, ad es. 0.8
Che cosa segue il valore e che cosa no
| Lo segue — i contenitori | Lo ignora — le cose che premi, e i contrassegni |
|---|---|
GoSurface (l'unico guscio dietro finestre di dialogo, sheet e menu a tendina) · GoSheet · GoDialogs · GoDrawer · GoPopover · GoNotice · GoSnackbar · GoPromptCard · GoCoachMark · GoConsole |
ogni pulsante · GoSlot (slot rapidi) · GoBadge · controlli segmentati · celle di scelta · chip · dischi e avatar |
GoStyle.card() · hud_panel() · overlay_panel() · alert() · plate() · edge_card_panel() · style_notice_panel() · floating() · box() · surface() |
tutto il testo e tutte le icone |
Un pulsante il cui stato è slavato non dice più che cos'è, e un badge esiste per rendere leggibili due caratteri — nessuno dei due è un contenitore, quindi nessuno dei due segue il valore.
popup_alpha 100). Il motore può ospitare un
PopupMenu in una Window propria, e lì il sistema operativo non lo compone con il
gioco: la traslucenza viene fuori nera anziché trasparente. Abbassalo solo nei progetti che incorporano le
proprie sottofinestre (gui_embed_subwindows).
Tre dettagli che vengono da schermi veri
-
Il valore moltiplica, non sostituisce. La faccia HUD di default è già a 0.92 di alpha, quindi
hud_alpha80 arriva a 0.736 — un tema che ha reso traslucida una faccia di proposito mantiene quella decisione. Il rovescio: applicalo due volte e il pannello sfuma due volte, ed è per questo che l'alpha viene moltiplicata in un solo punto (GoSkin.surface_box()) e ogni altra funzione di faccia inoltra l'argomento invece di sfumare il proprio risultato. -
Un colore che hai passato è il colore che ottieni.
GoStyle.plate(…, fill)mantiene un riempimento esplicito esattamente com'è stato dato:Color(ink, 0.14)dichiara già la sua alpha, e moltiplicarci dentro l'opacità del pannello taglierebbe due volte l'intento di chi chiama.GoStyle.floating(…, opaque = true)ignora il valore per un motivo dello stesso tipo — riempire la faccia fino a renderla opaca è l'intero scopo di quel flag. -
Ai pannelli che gohud non ha costruito vale la stessa regola.
GoStyle.fade_panel(node)— dopo che il nodo è nell'albero, così legge il tema che eredita. È idempotente: la faccia originale viene registrata e ogni chiamata ricalcola da quella, quindi i ridisegni ripetuti non si accumulano mai. Dopo un cambio di tema,GoStyle.forget_face(node)lascia cadere quella memoria perché la chiamata successiva prenda la faccia nuova.
Anche le facce personalizzate sfumano — ed è la parte che si rompe in silenzio
Il pannello dagli angoli tagliati (GoStyleBoxCut) e la cornice forgiata
(GoStyleBoxMedieval) non sono StyleBoxFlat; si disegnano da sé. Metti
l'opacità solo nel ramo flat e questi temi la ignorano in silenzio mentre ogni test basato sui valori continua a
passare. Entrambe sfumano il proprio sfondo e tengono bagliore, rivetti, incisione agli angoli e bisellature a piena intensità —
e la grana e il bisello della faccia medievale sono sempre stati proporzionali all'alpha del loro sfondo, quindi
si assottigliano insieme al pannello.
Ed è questo il punto più generale: bg_color.a == 0.8 è un numero. Il mondo si vede attraverso e
il testo resta leggibile è il requisito. gohud verifica il primo nella sua suite headless e il
secondo disegnando pannelli sopra strisce diagonali su un monitor virtuale
(tests/gohud_alpha_shot.gd) — sulla faccia flat, su quella tagliata e su quella forgiata, sia nel tema
scuro sia in quello chiaro.