gohud

Opasitas — game di balik panel

← Tema

Popup, dialog, lembar, kartu, panel HUD, peringatan, dan snackbar menggambar mukanya pada opasitas 80%. Pertarungan terus berjalan di balik sebuah dialog konfirmasi; petanya tampak di bawah lembar inventaris. Di dalam sebuah game ini bukan hiasan — inilah yang menjaga pemain tetap tahu di mana ia berada. Panel yang sepenuhnya pekat menghapus tempat ia tadi berdiri begitu sebuah jendela terbuka.

Hanya mukanya yang menipis. Teks, ikon, tombol, lencana, dan slot cepat tetap tajam, begitu pula garis tepi dan bayangannya. Panel tembus pandang terbaca sebagai kaca hanya selama garis luarnya tegas; pudarkan garis luarnya dan Anda tak bisa tahu di mana panelnya berakhir. Pudarkan kontennya dan UI-nya tak terbaca sama sekali — itu bukan jendela transparan, itu bug. Karena itulah nilainya tidak pernah diterapkan lewat modulate.a.

Lima lapis, yang paling spesifik dulu

UrutanDi manaSatuanJangkauan
argumen pada pemanggilan itu — surface.alpha, GoStyle.card(…, alpha)rasio 0.0–1.0satu jendela
GoConfig.container_alpha_overrides[kind]rasio 0.0–1.0satu jenis panel, seluruh proyek
GoConfig.metric_overrides[<kind>_alpha]persenproyek yang menyimpan setiap ukuran di satu tempat
GoConfig.container_alpharasio 0.0–1.0semua panel sekaligus
GoHud/constants/<kind>_alpha milik temanyapersenapa yang diputuskan tampilannya — sumber kebenarannya

Tanpa satu pun dari itu disetel, nilainya 100, jadi tak ada yang berubah pada tema lama.

Opasitas adalah rasio di mana-mana — kecuali di dalam temanya. Setiap kolom dan argumen alpha menerima 0.0–1.0, satuan yang sama dengan Color.a dan modulate.a, dan nilai negatif berarti "tidak disetel". Satu-satunya pengecualian adalah konstanta milik temanya, karena sebuah konstanta Theme tidak bisa memuat float: konstanta itu dan kanal yang menimpanya (metric_overrides, yang memakai nama dan tipe bilangan bulat yang sama dengan temanya) ditulis sebagai 80. Selain itu tidak ada.
# Satu jendela saja — dialog konfirmasi yang tak boleh menutupi pertarungan di belakangnya
surface.alpha = 0.6
sheet.alpha = 0.7
dialogs.alpha = 0.9                          # kolom @export pun rasio
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 jenis — jaga HUD tetap nyaris pekat, karena teksnya duduk langsung di atas dunianya
GoUi.config.container_alpha_overrides = {
    GoTheme.BOX_PANEL: 0.7,                   # dialog dan lembar bisa bernapas
    GoTheme.BOX_HUD: 0.95,
}
GoUi.refresh()                               # menggambar ulang widget yang sudah terbuka

# Seluruh proyek — dunia yang ramai ingin panelnya kembali pekat
GoUi.config.container_alpha = 1.0
GoUi.refresh()

GoUi.surface_alpha(GoTheme.BOX_PANEL)        # rasio hasilnya, mis. 0.8

Apa yang mengikuti nilainya, dan apa yang tidak

Mengikutinya — wadahMengabaikannya — yang Anda tekan, dan penanda
GoSurface (cangkang tunggal di balik dialog, lembar, dan dropdown) · GoSheet · GoDialogs · GoDrawer · GoPopover · GoNotice · GoSnackbar · GoPromptCard · GoCoachMark · GoConsole setiap tombol · GoSlot (slot cepat) · GoBadge · kontrol tersegmentasi · sel pilihan · chip · cakram dan avatar
GoStyle.card() · hud_panel() · overlay_panel() · alert() · plate() · edge_card_panel() · style_notice_panel() · floating() · box() · surface() semua teks dan ikon

Tombol yang statusnya pudar tak lagi mengatakan dirinya apa, dan lencana ada supaya dua huruf terbaca — keduanya bukan wadah, jadi keduanya tidak mengikuti nilai itu.

Menu popup tetap pekat (popup_alpha 100). Mesin bisa menempatkan sebuah PopupMenu di dalam Window-nya sendiri, dan di sana OS tidak mengomposisinya dengan game: tembus pandangnya keluar hitam alih-alih tembus. Turunkan hanya pada proyek yang menyematkan subjendelanya (gui_embed_subwindows).

Tiga rincian yang datang dari layar sungguhan

Muka buatan sendiri pun memudar — dan di situlah bagian yang diam-diam rusak

Panel bersudut potong (GoStyleBoxCut) dan bingkai tempaan (GoStyleBoxMedieval) bukan StyleBoxFlat; keduanya menggambar dirinya sendiri. Taruh opasitasnya hanya di cabang flat dan tema-tema ini diam-diam mengabaikannya sementara setiap uji berbasis nilai tetap lolos. Keduanya memudarkan latarnya dan mempertahankan pendar, paku keling, ukiran sudut, serta bevel pada kekuatan penuh — dan serat maupun bevel muka abad pertengahan memang selalu sebanding dengan alfa latarnya, jadi keduanya ikut menipis bersama panelnya.

Dan itulah poin yang lebih luas: bg_color.a == 0.8 adalah sebuah angka. Dunianya tampak menembus dan teksnya tetap terbaca adalah persyaratannya. gohud memeriksa yang pertama di rangkaian uji headless-nya dan yang kedua dengan menggambar panel di atas garis-garis diagonal pada monitor virtual (tests/gohud_alpha_shot.gd) — pada muka flat, muka terpotong, dan muka tempaan, di tema gelap maupun di tema terang.