gohud

ความทึบ — เกมที่อยู่หลังพาเนล

← ธีม

ป๊อปอัป ไดอะล็อก ชีต การ์ด พาเนล HUD กล่องแจ้งเตือน และสแน็กบาร์ วาดหน้าของมันที่ความทึบ 80% การต่อสู้ยังดำเนินต่อไปหลังไดอะล็อกยืนยัน แผนที่ยังเห็นได้ใต้ชีตกระเป๋าของ ในเกมนี่ไม่ใช่การตกแต่ง — มันคือสิ่งที่ทำให้ผู้เล่นไม่หลงทิศ พาเนลทึบตันลบที่ที่เขายืนอยู่ทิ้งทันทีที่หน้าต่างเปิดขึ้น

จางลงแค่หน้าของมันเท่านั้น ตัวอักษร ไอคอน ปุ่ม แบดจ์ และควิกสล็อตยังคมชัด เส้นขอบและเงาก็เช่นกัน พาเนลกึ่งโปร่งใสจะอ่านออกว่าเป็นกระจกก็ต่อเมื่อเส้นรอบรูปของมันยังคม ทำให้เส้นขอบจางลงเมื่อไร ก็บอกไม่ได้ว่าพาเนลจบตรงไหน ทำให้เนื้อหาจางลง UI ก็อ่านไม่ออกเลย — นั่นไม่ใช่หน้าต่างโปร่งใส นั่นคือบั๊ก นี่คือเหตุผลที่ค่านี้ไม่เคยถูกใส่ผ่าน 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)

รายละเอียดสามข้อที่มาจากหน้าจอจริง

หน้าแบบกำหนดเองก็จางลงด้วย — และนั่นคือส่วนที่พังอย่างเงียบ ๆ

พาเนลมุมตัดเฉียง (GoStyleBoxCut) และกรอบตีขึ้นรูป (GoStyleBoxMedieval) ไม่ใช่ StyleBoxFlat มันวาดตัวเอง ถ้าใส่ความทึบไว้ เฉพาะในสาขาของ flat ธีมพวกนี้ก็จะเมินมันอย่างเงียบ ๆ ขณะที่การทดสอบที่ดูจากค่าตัวเลขยังผ่านหมด ทั้งสองตัวทำให้พื้นหลังของมันจางลง แล้วคงแสงเรือง หมุดย้ำ ลายสลักที่มุม และขอบลาดไว้เต็มกำลัง — ส่วนลายเนื้อและขอบลาดของหน้าแบบยุคกลางนั้นแปรผันตามอัลฟาของพื้นหลังมาตลอดอยู่แล้ว มันจึงจางลงไปพร้อมกับพาเนล

ซึ่งนั่นคือประเด็นที่ใหญ่กว่า: bg_color.a == 0.8 เป็นแค่ตัวเลข โลกทะลุผ่านออกมาได้ และตัวอักษรยังอ่านออก ต่างหากคือข้อกำหนด gohud ตรวจข้อแรกในชุดทดสอบแบบไร้หน้าต่าง และตรวจข้อหลังด้วยการวาดพาเนลทับลายเส้นทแยงบนจอเสมือน (tests/gohud_alpha_shot.gd) — ทั้งบนหน้าแบบแบน แบบมุมตัดเฉียง และแบบตีขึ้นรูป ในทั้งธีมมืดและธีมสว่าง