ป๊อปอัป ไดอะล็อก ชีต การ์ด พาเนล HUD กล่องแจ้งเตือน และสแน็กบาร์ วาดหน้าของมันที่ความทึบ 80% การต่อสู้ยังดำเนินต่อไปหลังไดอะล็อกยืนยัน แผนที่ยังเห็นได้ใต้ชีตกระเป๋าของ ในเกมนี่ไม่ใช่การตกแต่ง — มันคือสิ่งที่ทำให้ผู้เล่นไม่หลงทิศ พาเนลทึบตันลบที่ที่เขายืนอยู่ทิ้งทันทีที่หน้าต่างเปิดขึ้น
modulate.a
ห้าชั้น เริ่มจากที่เจาะจงที่สุด
| ลำดับ | อยู่ที่ไหน | หน่วย | มีผลถึงไหน |
|---|---|---|---|
| ① | อาร์กิวเมนต์ ณ จุดที่เรียก — surface.alpha, GoStyle.card(…, alpha) | อัตราส่วน 0.0–1.0 | หน้าต่างเดียว |
| ② | GoConfig.container_alpha_overrides[kind] | อัตราส่วน 0.0–1.0 | พาเนลชนิดเดียว ทั่วทั้งโปรเจกต์ |
| ③ | GoConfig.metric_overrides[<kind>_alpha] | เปอร์เซ็นต์ | โปรเจกต์ที่เก็บค่าขนาดทุกตัวไว้ที่เดียว |
| ④ | GoConfig.container_alpha | อัตราส่วน 0.0–1.0 | พาเนลทุกอันพร้อมกัน |
| ⑤ | GoHud/constants/<kind>_alpha ของธีม | เปอร์เซ็นต์ | สิ่งที่ลุคเป็นผู้กำหนด — แหล่งความจริง |
ถ้าไม่ได้ตั้งสักชั้นเลย ค่าจะเป็น 100 ธีมเก่าจึงไม่มีอะไรเปลี่ยน
alpha และอาร์กิวเมนต์ทุกตัว
รับ 0.0–1.0 หน่วยเดียวกับ Color.a และ modulate.a และค่าติดลบ
หมายถึง "ไม่ได้ตั้ง" ข้อยกเว้นเดียวคือค่าคงที่ของธีม เพราะค่าคงที่ของ Theme
เก็บทศนิยมไม่ได้: ค่าเหล่านั้นกับช่องทางที่เขียนทับมัน (metric_overrides
ซึ่งใช้ชื่อและชนิดจำนวนเต็มร่วมกับธีม) เขียนเป็น 80 นอกนั้นไม่มีอะไรเขียนแบบนั้นอีก
# หน้าต่างเดียวเท่านั้น — ไดอะล็อกยืนยันที่ต้องไม่บังการต่อสู้ที่อยู่ข้างหลัง
surface.alpha = 0.6
sheet.alpha = 0.7
dialogs.alpha = 0.9 # ช่อง @export ก็เป็นอัตราส่วนเช่นกัน
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)
# แยกตามชนิด — ให้ HUD เกือบทึบตัน เพราะตัวอักษรของมันวางทับโลกตรง ๆ
GoUi.config.container_alpha_overrides = {
GoTheme.BOX_PANEL: 0.7, # ไดอะล็อกกับชีตหายใจได้
GoTheme.BOX_HUD: 0.95,
}
GoUi.refresh() # วาดวิดเจ็ตที่เปิดอยู่แล้วใหม่
# ทั้งโปรเจกต์ — โลกที่รกตาอยากได้พาเนลทึบตันกลับคืน
GoUi.config.container_alpha = 1.0
GoUi.refresh()
GoUi.surface_alpha(GoTheme.BOX_PANEL) # อัตราส่วนที่คำนวณแล้ว เช่น 0.8
อะไรเดินตามค่านี้ และอะไรไม่เดินตาม
| เดินตามมัน — คอนเทนเนอร์ | ไม่สนใจมัน — ของที่กดได้ และเครื่องหมาย |
|---|---|
GoSurface (เปลือกนอกหนึ่งเดียวที่อยู่หลังไดอะล็อก ชีต และดรอปดาวน์) · GoSheet · GoDialogs · GoDrawer · GoPopover · GoNotice · GoSnackbar · GoPromptCard · GoCoachMark · GoConsole |
ปุ่มทุกปุ่ม · GoSlot (ควิกสล็อต) · GoBadge · คอนโทรลแบบแบ่งช่อง · เซลล์ตัวเลือก · ชิป · วงกลมและอวาตาร์ |
GoStyle.card() · hud_panel() · overlay_panel() · alert() · plate() · edge_card_panel() · style_notice_panel() · floating() · box() · surface() |
ตัวอักษรและไอคอนทั้งหมด |
ปุ่มที่สถานะของมันจางหายไปก็ไม่ได้บอกอีกต่อไปว่ามันคืออะไร ส่วนแบดจ์มีอยู่เพื่อให้ตัวอักษรสองตัวอ่านออก — ทั้งคู่ไม่ใช่คอนเทนเนอร์ จึงไม่มีตัวไหนเดินตามค่านี้
popup_alpha 100) เอนจินอาจวาง
PopupMenu ไว้ใน Window ของมันเอง และที่นั่น OS ไม่ได้ผสมมันเข้ากับเกม:
ความกึ่งโปร่งใสจะออกมาเป็นสีดำแทนที่จะทะลุเห็นข้างหลัง ลดค่านี้เฉพาะในโปรเจกต์ที่ฝังหน้าต่างย่อยไว้ข้างใน
(gui_embed_subwindows)
รายละเอียดสามข้อที่มาจากหน้าจอจริง
-
ค่านี้คูณเข้าไป ไม่ได้แทนที่ หน้าของ HUD ตามค่าเริ่มต้นมีอัลฟา 0.92 อยู่แล้ว
hud_alpha80 จึงลงเอยที่ 0.736 — ธีมที่ตั้งใจทำให้หน้าของมันกึ่งโปร่งใสก็ยังรักษา การตัดสินใจนั้นไว้ อีกด้านหนึ่ง: ใส่สองครั้งพาเนลก็จางสองเท่า นี่คือเหตุผลที่อัลฟาถูกคูณในที่เดียว เท่านั้น (GoSkin.surface_box()) ส่วนฟังก์ชันวาดหน้าตัวอื่นทุกตัวส่งอาร์กิวเมนต์ต่อไป แทนที่จะทำให้ผลลัพธ์ของตัวเองจางลง -
สีที่ส่งเข้าไปคือสีที่ได้ออกมา
GoStyle.plate(…, fill)เก็บสีเติมที่ระบุมาไว้ ตรงตามนั้น:Color(ink, 0.14)บอกอัลฟาของมันไว้แล้ว การคูณความทึบของพาเนลเข้าไปอีก จะเป็นการหั่นเจตนาของผู้เรียกซ้ำสองครั้งGoStyle.floating(…, opaque = true)ไม่สนใจค่านี้ด้วยเหตุผลทำนองเดียวกัน — การเติมหน้าให้ทึบตันคือจุดประสงค์ทั้งหมดของแฟล็กนั้น -
พาเนลที่ gohud ไม่ได้สร้างก็ใช้กฎเดียวกัน
GoStyle.fade_panel(node)— หลังจาก โหนดเข้าไปอยู่ในทรีแล้ว มันจึงอ่านธีมที่มันสืบทอดมาได้ มันเรียกซ้ำได้ผลเท่าเดิม: หน้าดั้งเดิมถูกจดไว้ และทุกครั้งที่เรียกจะคำนวณใหม่จากตรงนั้น การวาดใหม่ซ้ำ ๆ จึงไม่ทับถมกัน หลังสลับธีมแล้วGoStyle.forget_face(node)จะทิ้งความจำนั้น การเรียกครั้งถัดไปจึงรับหน้าใหม่มาใช้
หน้าแบบกำหนดเองก็จางลงด้วย — และนั่นคือส่วนที่พังอย่างเงียบ ๆ
พาเนลมุมตัดเฉียง (GoStyleBoxCut) และกรอบตีขึ้นรูป
(GoStyleBoxMedieval) ไม่ใช่ StyleBoxFlat มันวาดตัวเอง ถ้าใส่ความทึบไว้
เฉพาะในสาขาของ flat ธีมพวกนี้ก็จะเมินมันอย่างเงียบ ๆ ขณะที่การทดสอบที่ดูจากค่าตัวเลขยังผ่านหมด
ทั้งสองตัวทำให้พื้นหลังของมันจางลง แล้วคงแสงเรือง หมุดย้ำ ลายสลักที่มุม และขอบลาดไว้เต็มกำลัง —
ส่วนลายเนื้อและขอบลาดของหน้าแบบยุคกลางนั้นแปรผันตามอัลฟาของพื้นหลังมาตลอดอยู่แล้ว
มันจึงจางลงไปพร้อมกับพาเนล
ซึ่งนั่นคือประเด็นที่ใหญ่กว่า: bg_color.a == 0.8 เป็นแค่ตัวเลข โลกทะลุผ่านออกมาได้
และตัวอักษรยังอ่านออก ต่างหากคือข้อกำหนด gohud ตรวจข้อแรกในชุดทดสอบแบบไร้หน้าต่าง
และตรวจข้อหลังด้วยการวาดพาเนลทับลายเส้นทแยงบนจอเสมือน
(tests/gohud_alpha_shot.gd) — ทั้งบนหน้าแบบแบน แบบมุมตัดเฉียง และแบบตีขึ้นรูป
ในทั้งธีมมืดและธีมสว่าง