gohud

Opaklık — panelin arkasındaki oyun

← Tema

Açılır pencereler, diyaloglar, sayfalar, kartlar, HUD panelleri, uyarılar ve snackbar'lar yüzlerini %80 opaklıkla çizer. Bir onay diyaloğunun arkasında dövüş sürer; bir envanter sayfasının altından harita görünür. Bir oyunda bu süsleme değildir — oyuncunun nerede olduğunu bilmesini sağlayan şeydir. Tamamen dolu bir panel, pencere açıldığı anda oyuncunun nerede durduğunu siler.

Yalnızca yüz incelir. Yazılar, simgeler, düğmeler, rozetler ve hızlı slotlar keskin kalır; kenarlıklar ve gölgeler de öyle. Yarı saydam bir panel ancak dış çizgisi net kaldığı sürece cam gibi okunur; dış çizgiyi soldurun, panelin nerede bittiğini anlayamazsınız. İçeriği soldurun, arayüz hiç okunamaz — o saydam bir pencere değil, bir hatadır. Değer bu yüzden asla modulate.a üzerinden uygulanmaz.

Beş katman, en özel olandan başlayarak

SıraNeredeBirimKapsam
o çağrıdaki argüman — surface.alpha, GoStyle.card(…, alpha)oran 0.0–1.0tek bir pencere
GoConfig.container_alpha_overrides[kind]oran 0.0–1.0proje genelinde tek bir panel türü
GoConfig.metric_overrides[<kind>_alpha]yüzdebütün ölçüleri tek yerde tutan projeler
GoConfig.container_alphaoran 0.0–1.0bütün paneller birden
temanın GoHud/constants/<kind>_alpha değeriyüzdegörünüşün kararı — doğrunun kaynağı

Hiçbiri ayarlanmamışsa değer 100'dür; yani eski bir temada hiçbir şey değişmez.

Opaklık her yerde bir orandır — tema dışında. Her alpha alanı ve argümanı 0.0–1.0 alır; Color.a ve modulate.a ile aynı birim, negatif bir değer ise "ayarlanmadı" demektir. Tek istisna temanın sabitleridir, çünkü bir Theme sabiti float tutamaz: bunlar ve onları geçersiz kılan kanal (temanın adlarını ve tam sayı türünü paylaşan metric_overrides) 80 biçiminde yazılır. Başka hiçbir şey öyle yazılmaz.
# Yalnızca tek bir pencere — arkasındaki dövüşü gizlememesi gereken bir onay diyaloğu
surface.alpha = 0.6
sheet.alpha = 0.7
dialogs.alpha = 0.9                          # @export alanları da orandır
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)

# Tür bazında — HUD'u neredeyse dolu tutun, çünkü yazısı doğrudan dünyanın üstünde durur
GoUi.config.container_alpha_overrides = {
    GoTheme.BOX_PANEL: 0.7,                   # diyaloglar ve sayfalar nefes alabilir
    GoTheme.BOX_HUD: 0.95,
}
GoUi.refresh()                               # zaten açık olan widget'ları yeniden çizer

# Bütün proje — kalabalık bir dünya panellerini yeniden dolu ister
GoUi.config.container_alpha = 1.0
GoUi.refresh()

GoUi.surface_alpha(GoTheme.BOX_PANEL)        # çözümlenmiş oran, örneğin 0.8

Değeri ne izler, ne izlemez

İzleyenler — kapsayıcılarYok sayanlar — bastığınız şeyler ve işaretler
GoSurface (diyalogların, sayfaların ve açılır listelerin arkasındaki tek kabuk) · GoSheet · GoDialogs · GoDrawer · GoPopover · GoNotice · GoSnackbar · GoPromptCard · GoCoachMark · GoConsole her düğme · GoSlot (hızlı slotlar) · GoBadge · bölümlü denetimler · seçim hücreleri · chip'ler · daireler ve avatarlar
GoStyle.card() · hud_panel() · overlay_panel() · alert() · plate() · edge_card_panel() · style_notice_panel() · floating() · box() · surface() bütün yazılar ve simgeler

Durumu solmuş bir düğme artık ne olduğunu söylemez ve bir rozet iki karakteri okunaklı kılmak için vardır — ikisi de kapsayıcı değildir, bu yüzden ikisi de değeri izlemez.

Açılır menüler dolu kalır (popup_alpha 100). Motor bir PopupMenu'yü kendi Window'unda barındırabilir ve orada işletim sistemi onu oyunla birleştirmez: yarı saydamlık, arkası görünen değil siyah çıkar. Bu değeri yalnızca alt pencerelerini gömen projelerde (gui_embed_subwindows) düşürün.

Gerçek ekranlardan gelen üç ayrıntı

Özel yüzler de solar — ve sessizce bozulan kısım tam da budur

Kesik köşeli panel (GoStyleBoxCut) ve dövme çerçeve (GoStyleBoxMedieval) birer StyleBoxFlat değildir; kendilerini kendileri çizer. Opaklığı yalnızca flat dalına koyun, bu temalar onu sessizce yok sayar, üstelik değere bakan bütün testler geçmeye devam eder. İkisi de arka planını soldurur; ışımayı, perçinleri, köşe gravürünü ve eğimleri tam güçte tutar — ortaçağ yüzünün dokusu ve eğimi ise en baştan beri arka plan alfasıyla orantılıydı, bu yüzden panelle birlikte incelir.

Asıl mesele de bu: bg_color.a == 0.8 bir sayıdır. Dünya arkadan görünüyor ve yazı hâlâ okunaklı ise gereksinimdir. gohud birincisini headless test takımında, ikincisini ise sanal bir monitörde panelleri çapraz şeritlerin üstüne çizerek (tests/gohud_alpha_shot.gd) denetler — flat, kesik ve dövme yüzde, hem koyu hem açık temada.