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.
modulate.a üzerinden uygulanmaz.
Beş katman, en özel olandan başlayarak
| Sıra | Nerede | Birim | Kapsam |
|---|---|---|---|
| ① | o çağrıdaki argüman — surface.alpha, GoStyle.card(…, alpha) | oran 0.0–1.0 | tek bir pencere |
| ② | GoConfig.container_alpha_overrides[kind] | oran 0.0–1.0 | proje genelinde tek bir panel türü |
| ③ | GoConfig.metric_overrides[<kind>_alpha] | yüzde | bütün ölçüleri tek yerde tutan projeler |
| ④ | GoConfig.container_alpha | oran 0.0–1.0 | bütün paneller birden |
| ⑤ | temanın GoHud/constants/<kind>_alpha değeri | yüzde | gö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.
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ılar | Yok 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.
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ı
-
Değer çarpar, yerine geçmez. Varsayılan HUD yüzü zaten 0.92 alfadadır; dolayısıyla
hud_alpha80, 0.736'ya iner — bir yüzü bilerek yarı saydam yapmış bir tema o kararını korur. Madalyonun öbür yüzü: iki kez uygularsanız panel iki kez solar. Alfa bu yüzden tam olarak tek bir yerde (GoSkin.surface_box()) çarpılır ve diğer bütün yüz fonksiyonları kendi sonucunu soldurmak yerine argümanı iletir. -
Geçirdiğiniz renk, aldığınız renktir.
GoStyle.plate(…, fill)açıkça verilmiş bir dolguyu verildiği gibi korur:Color(ink, 0.14)alfasını zaten söylemiştir, panel opaklığını onunla çarpmak çağıranın niyetini ikinci kez kısardı.GoStyle.floating(…, opaque = true)aynı türden bir nedenle değeri yok sayar — yüzü dolu doldurmak zaten o bayrağın bütün amacıdır. -
gohud'un kurmadığı paneller de aynı kurala tabidir.
GoStyle.fade_panel(node)— düğüm ağaca girdikten sonra çağrılır, böylece devraldığı temayı okur. İdempotenttir: özgün yüz kaydedilir ve her çağrı onun üstünden yeniden hesaplar, böylece tekrarlanan yeniden çizimler üst üste binmez. Tema değiştirdikten sonraGoStyle.forget_face(node)o kaydı düşürür; sonraki çağrı yeni yüzü alır.
Ö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.