ใหม่: อาร์เคด การ์ตูน Material 3 และลุคสำหรับเด็ก
สี่ตระกูลใหม่มาสมทบกับค่าเริ่มต้น ไซไฟ และยุคกลาง — ตอนนี้มีลุคในตัวสิบสี่แบบ แต่ละแบบมีทั้งโหมดมืดและโหมดสว่าง วิดเจ็ต ป๊อปอัป และชิ้นส่วน HUD ทุกตัวรับลุคเหล่านี้ได้โดยไม่ต้องแก้โค้ดของคุณ: สลับพรีเซ็ตแล้วทั้งหน้าจอเปลี่ยนตาม

material_light
material_dark
kids_light
kids_dark
comic_light
comic_dark
arcade_light
arcade_darkMaterial 3 — สำหรับหน้าจอแอป
Material 3 Expressive ที่วัดเทียบกับโทเคน M3 อย่างเป็นทางการ: ปุ่มแคปซูลที่มีแผ่นปุ่ม 40dp อยู่ภายในพื้นที่กดสัมผัส 48dp ไดอะล็อกและชีต 28dp การ์ดแบบเติมสี ช่องกรอกแบบมีขอบ และสไลเดอร์ Expressive คอมโพเนนต์แอป — แถบนำทาง แถบแอป FAB แถบค้นหา ชิป ความคืบหน้า และตัวเลือกวันที่ — เป็นไปตามโทเคนคอมโพเนนต์ของ M3 และหัวเรื่องใช้ฟอนต์ Roboto ที่แถมมา เหมาะกับร้านค้า หน้าตั้งค่า กล่องจดหมาย และทุกหน้าจอที่ควรให้ความรู้สึกแบบแอป
สำหรับเด็ก — กล่องของเล่น
ทำมาเพื่อเด็ก: ทุกปุ่ม ทุกแถว และทุกพาเนลคือลูกอมเยลลี่ที่มีขอบหนาอวบและฐานทึบซึ่งยุบลงเมื่อกด คอนโทรลแต่ละชนิดมีสีเทียนของตัวเอง ควิกสล็อตเป็นก้อนลูกอม ป้ายเป็นสติกเกอร์ จอยสติ๊กเป็นสีรุ้ง หน้าต่างได้ริบบิ้น ชื่อเรื่องสีแดดสดใสและปุ่มปิดลูกอมทรงกลม และการกดจะยุบนุ่ม ขนาดและฟอนต์ของโปรเจกต์คุณยังคงเหมือนเดิมทุกประการ
การ์ตูน — หมึกหนาเข้ม
ทุกหน้าคือช่องหนังสือการ์ตูน: สีพื้นผิวอยู่ภายในเส้นขอบหมึกหนา มีเงาคมอยู่ด้านหลัง ซึ่งหายไปเมื่อกด การตั้งค่าเดียวเปิดหรือปิดเงาทั้งหมด อีกสองค่ากำหนดความหนาของเส้นขอบ และขนาดของเงา และการเรียกครั้งเดียวทำแบบเดียวกันกับวิดเจ็ตเพียงตัวเดียว หน้าต่างได้ป้ายชื่อเรื่องสีเหลือง
อาร์เคด — ปุ่มลงสี
ทุกปุ่มถูกลงสี — ไล่เฉดสี มีเงาสะท้อนสีขาว และฐานที่ยุบลงเมื่อกด ภายในเส้นขอบหมึกสีกรมท่า — และ ป้ายข้อความเป็นสีขาวตัดเส้นหมึก: สีเขียวสำหรับเล่น สีน้ำเงินสำหรับที่เหลือ สีแดงสำหรับลบ บอร์ดมีความหนา เป็น กรอบสีล้อมรอบแอ่งสีอ่อน และหน้าต่างได้แถบชื่อเรื่องสีทองกับปุ่มปิดทรงกลมสีแดง
GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT) # หรือ MATERIAL_DARK
GoUi.use_preset(&"kids_light") # หรือ &"kids_dark"
GoUi.use_preset(&"comic_light") # หรือ &"comic_dark"
GoUi.use_preset(&"arcade_light") # หรือ &"arcade_dark"
Material 3 โดยละเอียด → · ลุคสำหรับเด็กโดยละเอียด → · อาร์เคด ทีละวิดเจ็ต ↓ · การ์ตูน ทีละวิดเจ็ต ↓ · ป๊อปอัปเดียวกันในทั้งสิบสี่ลุค →
อาร์เคด: ปุ่มลงสีและบอร์ดหนา
ลุคใหม่ล่าสุดแต่งทุกหน้าจอให้เหมือนตู้เกมอาร์เคด ทุกปุ่มถูกลงสี — ไล่เฉดจากด้านบนที่สว่างไปยัง
ด้านล่างที่เข้มกว่า มีเส้นเงาสะท้อนสีขาว และฐานที่ยุบลงเมื่อกด ทั้งหมดอยู่ภายในเส้นขอบหมึกสีกรมท่า — และป้ายข้อความ
เป็นสีขาวตัดเส้นหมึก ทุกบอร์ดมีความหนา: กรอบสีที่มีเงาสะท้อนของตัวเองล้อมรอบแอ่งสีอ่อน
arcade_light วางบอร์ดสีขาวบนหน้าสีฟ้าท้องฟ้า ส่วน arcade_dark วางบอร์ดสีกรมท่าบนหน้ายามค่ำคืน
ทุกภาพด้านล่างคือหน้าจอ gohud จริง — โค้ดเดียวกัน ต่างกันแค่บรรทัดพรีเซ็ตบรรทัดเดียว
GoUi.use_preset(&"arcade_light") # หรือ &"arcade_dark"

arcade_light · แกลเลอรี
arcade_dark · แกลเลอรี
GoDialogs
GoSheet
GoCoachMark
GoDrawer
GoPopover
GoDialogs.alert()
GoSnackbarทุกปุ่มถูกลงสี

GoStyle.button()
GoStyle.tabs()


GoStyle.card()
GoForm
GoStyle.choice_grid()
GoSlotGrid

GoDatePicker
GoStyle.slider()
GoStyle.radio_group()
GoStyle.filter_chip()
GoSearchBar
GoStepper
GoTable
GoNavBar
GoTimePicker
GoCodeInput
GoWheelPickerยามค่ำคืน: arcade_dark
บนหน้าสีมืด หมึกกลายเป็นสีของหน้าเอง ซึ่งเข้มกว่ามาก ส่วนสีที่ลงไว้ยังสดใสเท่าเดิม

GoStyle.button() ยามค่ำคืน
GoBar
GoStyle.hud_panel()
GoSlot
GoJoystick

GoFab
GoRewardCalendar

GoTabView
GoScroll

GoStyle.chip()
GoSlotGrid
GoRangeSlider
GoPagination
GoBadgeลุคอาร์เคดทำงานอย่างไร
หน้าปุ่ม
ทุกปุ่มและบอร์ดคือ GoStyleBoxArcade: เส้นขอบหมึก ตัวไล่เฉดสี ฐาน และเงาสะท้อน ที่วาด
อยู่ภายในสี่เหลี่ยมของคอนโทรลเอง — ปุ่มคงขนาดเดิมในทุกสถานะ และการกดเพียงทำให้มันยุบลง
ป้ายข้อความที่อ่านออก
ป้ายข้อความสีขาวตัดเส้นหมึกอ่านออกบนสีใดก็ตามที่เส้นขอบแยกมันออกมา — WCAG นับเส้นขอบเป็นส่วนหนึ่ง ของตัวอักษร ทุกสีจะถูกปรับจนป้ายข้อความผ่าน 4.6:1 ที่ทุกระดับความสูงของการไล่เฉด
หน้าต่าง
ชื่อหน้าต่างอยู่บนแถบสีทองเป็นตัวอักษรสีขาวตัดเส้นหมึก ข้าง ๆ ปุ่มปิดทรงกลมสีแดง ไดอะล็อก ชีต ลิ้นชัก และป๊อปโอเวอร์ เป็นบอร์ดกรอบหนา
ปุ่มเดียวก็ใช้สีของตัวเองได้ — เช่นปุ่มร้านค้าสีส้มในเมนูหยุดเกม:
menu.add_child(GoStyle.arcade_paint(GoStyle.button("Shop", _shop), Color("#FF8A1E")))
การ์ตูน: หมึกหนาเข้มและเงาคม
ลุคการ์ตูนวาดทุกหน้าให้เหมือนช่องในหนังสือการ์ตูน — สีพื้นผิวอยู่ภายในเส้นขอบหมึกหนา
พร้อมเงาคมทึบที่ทอดลงด้านล่างขวา comic_light ตัดเส้นหมึกสีดำบนหน้าสีครีมแบบกระดาษ
พร้อมสีหลักสีน้ำเงินโคบอลต์ ส่วน comic_dark ตัดเส้นสีครีมบนหน้ายามค่ำคืนพร้อมสีหลักสีเหลือง ทุกภาพด้านล่าง
คือหน้าจอ gohud จริง — โค้ดเดียวกัน ต่างกันแค่บรรทัดพรีเซ็ตบรรทัดเดียว
GoUi.use_preset(&"comic_light") # หรือ &"comic_dark"

comic_light · แกลเลอรี
comic_dark · แกลเลอรี
GoSheet
GoCoachMark
GoDrawer
GoPopoverทุกวิดเจ็ตตัดเส้นหมึก
ปุ่ม สวิตช์ แท็บ สไลเดอร์ การ์ด ฟอร์ม ตาราง ตัวเลือก และชิป ล้วนสวมเส้นหมึกทั้งหมด — คุณไม่ต้อง จัดสไตล์ทีละตัว กดปุ่มแล้วเงาของมันจะหายไป: หน้าปุ่มยุบลงไปอยู่ที่ตำแหน่งของมัน เหมือนตราประทับ หน้าที่ปิดใช้งานจะไม่มีเงาและจางลง สิ่งที่กดได้จึงโดดเด่นออกมาจากสิ่งที่กดไม่ได้

GoStyle.button() — ครบทุกชนิด


GoStyle.tabs()

GoStyle.slider()

GoStyle.card()
GoForm

GoTable
GoDatePicker
GoTimePicker
GoStepper

GoNavBar
GoInputGroup
GoSplitButton
GoPaginationยามค่ำคืน: comic_dark
บนหน้าสีมืด เส้นขอบสีดำจะหายไป comic_dark จึงวาดเส้นขอบเป็นสีครีมและทอดเงาจาง ๆ
ที่แต้มสีหมึกเดียวกัน ชิ้นส่วน HUD — ควิกสล็อต แถบ จอยสติ๊ก และปฏิทินรางวัล — ก็ทำตามกฎเดียวกัน

GoStyle.button() ยามค่ำคืน
GoSlot
GoBar
GoJoystick

GoSlotGrid
GoRewardCalendar

GoRangeSlider
GoSearchBar
GoFabลุคการ์ตูนทำงานอย่างไร
StyleBox เดียวสำหรับทุกหน้า
ทุกหน้าคือ GoStyleBoxComic: สีเติม เส้นขอบ และเงา ที่วาดอยู่ภายในสี่เหลี่ยมของคอนโทรลเอง มันอ่านขนาดเส้นขอบและเงาจาก GoConfig ทุกครั้งที่วาด การตั้งค่าเดียวจึงเปลี่ยนทั้งหน้าจอได้ในคราวเดียว
กดแล้วแบนราบ
ปุ่มที่ถูกกดจะไม่มีเงาและเลื่อนลงไปอยู่ที่ตำแหน่งของมัน ตอนโฮเวอร์เงายังอยู่ ตอนโฟกัสจะมีวงแหวนหมึกด้านในที่ไม่บังเส้นขอบเลย และหน้าที่ปิดใช้งานจะไม่มีเงาและจางลง
สกินตัดเส้นหมึกส่วนที่เหลือ
GoSkinComic ตัดเส้นหมึกให้สิ่งที่โค้ดวาด: ควิกสล็อต ชิป ป้าย อวาตาร์ ข้อความแจ้งเตือน แถบนำทาง FAB ช่องวันที่ และจอยสติ๊กที่ปุ่มจับทอดเงา
หน้าต่างได้ป้ายชื่อเรื่อง
ชื่อหน้าต่างอยู่บนป้ายสีเหลือง เหมือนกล่องบรรยายในหนังสือการ์ตูน ข้าง ๆ ปุ่มปิดทรงกลมตัดเส้นหมึก ไดอะล็อก ชีต ลิ้นชัก และป๊อปโอเวอร์ เป็นพาเนลทึบตัดเส้นหมึก
อ่านง่ายทั้งกลางวันและกลางคืน
จานสีทั้งสองผ่านการตรวจคอนทราสต์ตาม WCAG ชุดเดียวกับพรีเซ็ตอื่นทุกตัว รวมถึงปุ่มที่ถูกกดและปุ่มที่ปิดใช้งาน เมื่อสีของป้ายชื่อเรื่องใกล้เคียงกับสีหน้ามากเกินไป เส้นขอบของมันจะกลับไปใช้สีหน้าแทน
เลย์เอาต์ไม่เปลี่ยน
เส้นขอบและเงาอยู่ภายในคอนโทรลแต่ละตัว และระยะขอบด้านในยังคงตามที่ธีมกำหนด หน้าจอที่จัดวางไว้ในลุคอื่นจึงคงเลย์เอาต์เดิม — และฟอนต์ของโปรเจกต์คุณ
สามค่าตั้งค่าและการเรียกหนึ่งครั้ง
ค่าตั้งค่า GoConfig สามตัวเปลี่ยนทุกหน้าการ์ตูนได้ในคราวเดียว ไม่มีอะไรต้องสร้างใหม่ — หน้าจอวาดใหม่ทันทีที่คุณตั้งค่า
GoUi.config.comic_border_width = 2.0 # เส้นขอบ (dp) — ค่าเริ่มต้น 3
GoUi.config.comic_shadow_size = 6.0 # เงา (dp) — ค่าเริ่มต้น 4
GoUi.config.comic_shadow = false # ไม่มีเงาที่ไหนเลย
วิดเจ็ตตัวเดียวทำต่างออกไปได้ ไม่ว่าค่าตั้งค่าจะเป็นอย่างไร ส่ง true เป็นอาร์กิวเมนต์ตัวสุดท้ายเพื่อให้รวมทุกอย่างที่อยู่ข้างในด้วย
GoStyle.comic_shadow(skip_button, false) # ปุ่มนี้แบนราบ
GoStyle.comic_shadow(card, true, true) # การ์ดนี้และทุกอย่างข้างในยังมีเงา
GoStyle.comic_border(title, 5.0) # เส้นขอบหนาขึ้นสำหรับตัวนี้
tools/new_theme.py inked --from comic_light คัดลอกจานสีมาให้ เปลี่ยนสี
กระดาษ หมึก และสีหลัก แล้วรัน tools/make_theme.py inked หมึก เงา และสกินจะตามมาด้วย
หน้าตาเมื่ออยู่ในเกมจริง
พรีเซ็ตยุคกลางและไซไฟ — แผ่นข้อมูลตัวละคร กระเป๋าของ และเควสต์ ฟอร์ม กริด และพรอมต์การ์ด พาเนลมุมเหลี่ยมและปุ่มควบคุมแบบสัมผัส การสลับพรีเซ็ตใช้โค้ดบรรทัดเดียว
สิ่งที่ gohud รับไปทำแทนคุณ
สิ่งที่กินเวลามากที่สุดใน UI ของเกมไม่ใช่รูปทรงของปุ่ม แต่เป็นทุกอย่างที่เพี้ยนไปคนละทาง เมื่อเปลี่ยนเครื่อง gohud จัดการความเพี้ยนนั้นไว้ในที่เดียว
ทุกค่าขนาดคือโทเคน
ระยะห่าง มุม และขนาดตัวอักษรถูกเรียกด้วยชื่อ ไม่ใช่เขียนเป็นตัวเลข สลับธีมแล้วทั้งหน้าจอขยับตามไปพร้อมกัน
ขนาดที่เห็น ≠ ขนาดที่กดได้
ปุ่มปิดดูเหมือนกว้าง 36dp แต่พื้นที่กดสัมผัสคือ 48dp เมื่อสล็อตที่อยู่ชิดกันมีพื้นที่ซ้อนทับ อันที่จุดกึ่งกลางใกล้กว่าจะได้รับการกดไป
รอยบากหน้าจอและคีย์บอร์ด
ชิ้นส่วน HUD อยู่ในเซฟแอเรียเสมอ และช่องกรอกข้อมูลจะยกตัวขึ้นเหนือคีย์บอร์ดเสมือนทันทีที่มันโผล่มา
ปุ่มย้อนกลับปิดทีละชั้น
Escape และปุ่มย้อนกลับของ Android ปิดเฉพาะเลเยอร์บนสุด หน้าต่างที่ซ้อนกันอยู่จะไม่หายวับไปพร้อมกันหมด
ข้อความแจ้งเตือนไม่แย่งอินพุต
กดทะลุสแน็กบาร์ลงไปแล้วปุ่มข้างใต้ยังรับการกดอยู่ และมันก็ไม่แย่งโฟกัสไปด้วย
ไอคอนถูกเรียกด้วยชื่อ
วิดเจ็ตรู้จักแค่ GoIconSet.CLOSE สลับชุดไอคอนแล้วภาพวาดทุกชิ้นเปลี่ยนตาม โดยไม่ต้องแตะโค้ดสักบรรทัด ไอคอน →
สิบสี่ลุค หนึ่งบรรทัด
GoUi.use_preset() สลับธีม สกิน และไอคอนพร้อมกัน — จะเป็นมุมมน มุมตัดเฉียงแบบไซไฟ กรอบตีเหล็กแบบยุคกลาง คอมโพเนนต์แอปของ Material 3 ลูกอมเยลลี่สำหรับเด็ก หมึกแบบการ์ตูน หรือสีแบบอาร์เคดก็ได้
อ่านออกโดยวัดผลจริง
ทุกธีมถูกตรวจกับ WCAG รวมถึงสถานะต่าง ๆ ของปุ่ม และพาเนล HUD กึ่งโปร่งใสที่วางทับพื้นขาวล้วนและดำล้วน
ติดตั้ง gohud
มีสองทาง ให้เอเจนต์ AI ทำให้ หรือวางโฟลเดอร์ลงในโปรเจกต์ของคุณ — ไม่มีอะไรต้องตั้งค่าเพิ่ม
เริ่มใช้งาน
ห้าบรรทัดก็ได้หน้าจอที่ใส่ธีมแล้ว ขั้นตอนทั้งหมดอยู่ในหน้าติดตั้ง
เปลี่ยนลุค — ทั้งสีและรูปทรง
Theme ปรับสไตล์ได้แค่สิ่งที่เอนจินวาดเท่านั้น มุมมนคือมุมชนิดเดียวที่ StyleBoxFlat มีให้ ส่วนจอยสติ๊ก ควิกสล็อต และโค้ชมาร์กนั้นถูกวาดด้วยโค้ด — ธีมเพียงอย่างเดียวจึงไม่มีทาง เปลี่ยนรูปทรงของมันได้ gohud จึงมาพร้อม พรีเซ็ต: ธีม สกิน และชุดไอคอนที่เลือกมาเป็นชุดเดียวกัน
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) # ธีม สกิน และไอคอน พร้อมกันทีเดียว
| พรีเซ็ต | ลุค |
|---|---|
default_dark | gohud ดั้งเดิม — มุมมน สีเน้นฟ้านวล |
default_light | รูปทรงเดิมบนจานสีโทนสว่าง |
scifi_dark | มุมตัดเฉียง ขอบนีออนสีฟ้าไซแอนพร้อมแสงเรือง จอยสติ๊กหกเหลี่ยม วงเล็บเล็งเป้า |
scifi_light | รูปทรงเหลี่ยมแบบเดียวกันบนจานสีพิมพ์เขียวสว่าง |
medieval_dark | เหล็กดำและหนัง กรอบทองโบราณ หมุดย้ำ ไอคอนสลัก หัวข้อฟอนต์ Cinzel |
medieval_light | กระดาษหนัง หมึก และทองสัมฤทธิ์ บนกรอบตีขึ้นรูปแบบเดียวกัน |
material_light ใหม่ | Material 3 สำหรับหน้าจอแอป — ปุ่มทรงแคปซูล ไดอะล็อก 28dp การ์ดแบบเติมสี แถบนำทาง FAB และแถบค้นหาของแอป Roboto |
material_dark ใหม่ | รูปทรง Material 3 แบบเดียวกันบนโทนมืดพื้นฐาน |
kids_light ใหม่ | กล่องของเล่นสำหรับเด็ก — ปุ่มลูกอมเยลลี่ที่มีขอบหนาอวบและฐานที่ยุบลงเมื่อกด สีเทียน หน้าสีแดดสดใส |
kids_dark ใหม่ | กล่องของเล่นเดียวกันบนหน้าสีน้ำเงินยามค่ำคืน |
comic_light ใหม่ | ช่องหนังสือการ์ตูน — เส้นขอบหมึกหนาและเงาคมบนทุกหน้า พาเนลสีขาวบนหน้าสีครีมแบบกระดาษ เงา ขนาดเงา และความหนาของเส้นขอบเป็นค่าตั้งค่าทั้งหมด |
comic_dark ใหม่ | หมึกเดียวกันบนหน้ายามค่ำคืน — เส้นขอบสีครีมและสีหลักสีเหลือง |
arcade_light ใหม่ | ตู้เกมอาร์เคด — ทุกปุ่มลงสีไล่เฉด มีเงาสะท้อนและฐาน ป้ายข้อความสีขาวตัดเส้นหมึก บอร์ดกรอบหนาบนหน้าสีฟ้าท้องฟ้า และแถบชื่อเรื่องสีทองบนหน้าต่าง |
arcade_dark ใหม่ | ปุ่มสีสดชุดเดียวกันบนบอร์ดสีกรมท่าและหน้ายามค่ำคืน |
default_dark — มุมมน สีเน้นฟ้านวล
default_light — รูปทรงเดิม จานสีสว่าง
scifi_dark — มุมตัดเฉียง นีออนไซแอน
scifi_light — รูปทรงเหลี่ยมเดิม จานสีพิมพ์เขียวทั้งสี่ภาพนั้นคือหน้าจอแกลเลอรีเดียวกัน ไม่มีโค้ดต่างกันสักบรรทัด — ต่างกันแค่ชื่อพรีเซ็ต มุมของปุ่ม รูปทรงของสวิตช์ แถวรายการ และเส้นขอบช่องกรอก ขยับตามไปพร้อมกันทั้งหมด
คอลเลกชันยุคกลาง
medieval_dark จับคู่เหล็กและหนังเข้ากับทองโบราณ ส่วน medieval_light ใช้กระดาษหนัง
และหมึก กรอบเมนูมีหมุดย้ำและลวดลายมุมเล็ก ๆ ขณะที่ HUD ซึ่งมองเห็นตลอดเวลายังคงเรียบสงบ
ไอคอนสลัก 16 ชิ้นวาดชื่อไอเทมใหม่ และมีแต่หัวข้อกับหัวข้อรองเท่านั้นที่ใช้ฟอนต์ Cinzel ที่แถมมา
medieval_dark — เหล็กและหนัง
medieval_light — กระดาษหนังและหมึกทั้งสองภาพคือ examples/medieval/medieval.tscn ที่ประกอบขึ้นจากวิดเจ็ตมาตรฐาน
คู่มือยุคกลางและวิธีสร้างอาณาจักรของคุณเอง →
หน้าจอเดียวกัน บนมือถือและบนเดสก์ท็อป
ภาพแกลเลอรีข้างบนคือมือถือแนวตั้ง ส่วนด้านล่างคือโค้ดชุดเดียวกันที่ 1280×800 — เนื้อหาหยุดที่ ความกว้างที่อ่านสบาย (480dp) แล้วจัดกึ่งกลาง ขณะที่ HUD ยังอยู่ตามมุม ฟอร์มจะเดินอ้อมชิ้นส่วน HUD ที่ลอยอยู่ แต่จะไม่ขยับถ้ามันพ้นกันอยู่แล้ว: ถ้าดันทุรังเลื่อนต่อไป เนื้อหาจะหลุดจากกึ่งกลางบนจอกว้าง
default_dark · 1280×800
scifi_dark · 1280×800ชีตเดียวกัน คนละลุค
เลือกได้จาก Project Settings → gohud → Theme → Preset หรือกำหนดที่ GoConfig.preset
ถ้าระบุ theme, skin หรือ icons ไว้ตรง ๆ ค่านั้นจะชนะพรีเซ็ต
คุณจึงหยิบพรีเซ็ตมาแล้วเขียนทับเฉพาะบางชิ้นได้
new_theme.py kingdom --from medieval_dark จะเขียน
จานสีที่ระบุค่าที่สืบทอดมาทุกค่าไว้ครบถ้วน แล้ว make_theme.py kingdom จะสร้างตัวธีม ภาพของคอนโทรล
และค่าปรับของสกิน จากนั้นพรีเซ็ตจะโผล่ในตัวเลือกเอง ทุกการตั้งค่าและทุกค่าปรับ →
สกิน — ที่ที่ Theme เอื้อมไม่ถึง
สกินเป็นเจ้าของจอยสติ๊ก หน้าควิกสล็อต วงแหวนโค้ชมาร์ก ชิป สเกเลตัน กล่องแจ้งเตือน เส้นคั่น และหัวข้อส่วน สืบทอดคลาสแล้วเขียนทับเฉพาะสิ่งที่อยากเปลี่ยนก็พอ
class_name MySkin extends GoSkin
func slot_box(accent: Color, lit: bool) -> StyleBox:
var box := GoStyleBoxCut.new()
box.bg_color = accent
box.cut = 6.0
box.edge_color = accent
return box
| คลาส | รูปทรงที่สร้างได้ |
|---|---|
GoStyleBoxCut | มุมตัดเฉียง (chamfer) ขอบเน้นสีที่หนาขึ้นหนึ่งด้าน และแสงเรืองรอบนอก |
GoStyleBoxBracket | เครื่องหมายมุมอย่างเดียว โดยไม่ล้อมกรอบเนื้อหา |
GoStyleBoxMedieval | กรอบตีขึ้นรูปพร้อมหมุดย้ำ ลายสลักที่มุม แสงไฮไลต์ตามขอบลาด และลายเนื้อวัสดุ |
GoStyleBoxJelly | ลูกอมเยลลี่ — ขอบหนาอวบ ฐานทึบที่ยุบลงเมื่อกด ตัวที่ด้านบนสว่างกว่าด้านล่าง และประกายสีขาว |
GoStyleBoxComic | ช่องหนังสือการ์ตูน — เส้นขอบหมึกหนาและเงาตกกระทบที่คม ทั้งสองอย่างกำหนดขนาดโดย GoConfig ขณะเกมทำงาน |
GoStyleBoxArcade | ปุ่มหรือบอร์ดแบบอาร์เคด — ตัวไล่เฉดสี เงาสะท้อนสีขาว ฐานที่ยุบลงเมื่อกด และเส้นขอบหมึก ส่วนบอร์ดจะเพิ่มกรอบสีหนาล้อมรอบแอ่งสีอ่อน |
ทั้งหกคลาสสามารถซีเรียลไลซ์ลงในรีซอร์ส Theme ได้ — นี่เองคือสิ่งที่ทำให้ธีมเปลี่ยนรูปทรงได้ ไม่ใช่แค่สี
GoSkinSciFi, GoSkinMedieval, GoSkinMaterial, GoSkinKids, GoSkinComic และ GoSkinArcade คือซับคลาสที่แถมมาให้



GoStyle.box() คืนค่าเป็น StyleBoxFlat เสมอ เพราะโค้ดที่เรียกใช้จะรับมันไป
แล้วปรับ bg_color หรือ corner_radius ต่อ ถ้าต้องการให้รูปทรงที่กำหนดเองอยู่รอด
ให้ใช้ GoStyle.surface() แทน
วิดเจ็ต
ชิ้นส่วนทั้งหมดในตารางเดียว ดูรายละเอียดทีละชิ้น → · วิดเจ็ตทุกตัวพร้อมภาพ → · ป๊อปอัปและกล่องโต้ตอบ คู่มือฉบับเต็ม →
| คลาส | สืบทอดจาก | ทำอะไร |
|---|---|---|
GoSurface | Control | เปลือกการ์ดลอย — วางกึ่งกลาง ชิดล่าง หรือยึดกับคอนโทรล พร้อมหัวและท้ายติดหนึบ เนื้อหาเลื่อนได้ และลากปรับขนาดได้ |
GoSheet | CanvasLayer | หน้าที่ยกขึ้นมาจากด้านล่าง อยู่บนเลเยอร์ของตัวเองจึงลอยเหนือ HUD เสมอ |
GoDialogs | Node | กล่องยืนยันและกล่องแจ้งเตือนที่ await ได้ พร้อม destructive สำหรับการกระทำที่ย้อนกลับไม่ได้ |
GoForm | MarginContainer | ฟอร์มที่จำกัดความกว้าง หลบคีย์บอร์ดเสมือน และหลบ HUD ได้ด้วย avoid_hud |
GoScroll | ScrollContainer | การเลื่อนด้วยนิ้ว แถบเลื่อนซ่อนตัวเข้าไปในระยะขอบของการ์ด |
GoNotice | PanelContainer | สแน็กบาร์ที่ไม่แย่งทั้งอินพุตและโฟกัส |
GoPromptCard | PanelContainer | คำถามที่ไม่หยุดเกม |
GoCoachMark | Control | ทัวร์แนะนำที่ชี้ไปยังคอนโทรลจริง กดที่เป้าหมายแล้วเดินหน้าต่อ |
GoHudAnchor | Control | ตรึงชิ้นส่วน HUD ไว้ที่ตำแหน่งใดตำแหน่งหนึ่งใน 9 จุดของเซฟแอเรีย |
GoBar | Control | แถบพลังชีวิต มานา และค่าประสบการณ์ ที่เปลี่ยนค่าอย่างนุ่มนวล |
GoSlot | Button | ควิกสล็อตหนึ่งช่อง — ไอคอน จำนวน คูลดาวน์ และปุ่มลัด อยู่บนหน้าเดียวกัน |
GoJoystick | Control | จอยสติ๊กเสมือน โหมดอยู่กับที่ ตามนิ้ว หรือสัมพัทธ์ |
GoIconButton | Button | ดูเล็ก แต่กดง่าย |
GoStyle | static | ปุ่ม แถวรายการ ช่องกรอก ชิป ตาราง แท็บ และอื่น ๆ ที่สร้างขึ้นด้วยวิธีเดียวกันทั้งหมด |
การรอ การบอก การนับ
| คลาส | สืบทอดจาก | ทำอะไร |
|---|---|---|
GoSnackbar | Node | ข้อความที่จัดที่ให้ตัวเอง |
GoSpinner | Control | การรอที่ยังมองไม่เห็นปลายทาง |
GoBadge | PanelContainer | จุดที่ยังไม่ได้อ่าน ป้าย "ใหม่" และเลข 99+ |
ฟอร์มและรายการ
| คลาส | สืบทอดจาก | ทำอะไร |
|---|---|---|
GoField | VBoxContainer | แถวที่ผิดพลาดได้ |
GoInputGroup | HBoxContainer | ช่องกรอกที่เชื่อมติดกับปุ่มของมัน |
GoCombobox | Button | ตัวเลือกที่ค้นหาได้ |
GoCodeInput | VBoxContainer | โค้ดคูปองและโค้ดของขวัญ |
GoTable | VBoxContainer | หัวตารางที่เรียงลำดับได้ แถวที่เลือกได้ |
GoPagination | HBoxContainer | แบ่งเป็นหน้า หรือแถว "ดูเพิ่ม" |
รูปทรงที่เกมใช้จริง
| คลาส | สืบทอดจาก | ทำอะไร |
|---|---|---|
GoRewardCalendar | VBoxContainer | การเช็กชื่อรายวัน |
GoRadar · GoDonut | Control | ค่าสถานะที่เห็นได้ในพริบตา |
GoCarousel | VBoxContainer | แบนเนอร์และหน้าเลือกตัวละคร |
GoKbd | HBoxContainer | คำใบ้ปุ่มที่ไม่โกหก |
ทับอยู่บนหน้าจอ
| คลาส | สืบทอดจาก | ทำอะไร |
|---|---|---|
GoDrawer | CanvasLayer | พาเนลด้านข้าง |
GoPopover | RefCounted | การ์ดที่ตรึงไว้กับที่ |
GoContextMenu | RefCounted | กดค้างและคลิกขวา |
GoConsole | CanvasLayer | คอนโซลสำหรับนักพัฒนา |
Go HUD Skill
gohud มี AI skill มาให้ — API ทั้งหมด เทมเพลตที่รันได้ทันที และตัวเปิดพรีวิว วางบล็อกเดียวด้านล่างให้เอเจนต์เขียนโค้ดของคุณ แล้วมันจะติดตั้ง gohud และรู้วิธีใช้
ความอ่านง่ายเป็นเรื่องที่วัด ไม่ใช่กะเอาด้วยตา
"สวย" เป็นเรื่องรสนิยม แต่ "อ่านออก" วัดได้ ตัวอักษรสีเทาจาง ๆ ดูดีบนจอมอนิเตอร์ดี ๆ แล้วหายไปเลยบนมือถือกลางแดด — เลือกด้วยตาเปล่าเมื่อไร ก็รับประกันว่าเจอปัญหานี้เข้าสักวัน
python3 addons/gohud/tools/check_contrast.py
ทุกคู่สี และป้ายข้อความของปุ่มในทุกสถานะเทียบกับพาเนลที่มันวางอยู่ ถูกวัดกับ WCAG ครบทั้ง 14 ธีม สีกึ่งโปร่งใสจะถูกนำไปซ้อนบนพื้นหลังจริงก่อนวัด — เพราะถ้าวัดตรง ๆ จะได้ค่าอัตราส่วนที่ดีเกินกว่าที่ปรากฏบนหน้าจอจริง
สีตัวอักษรจึงเป็นค่าที่ คำนวณมา ไม่ใช่เลือกเอง: ตัวสร้างธีมหยิบค่าจากจานสีมาเป็นจุดตั้งต้น แล้วดันค่าความสว่างขึ้นลงจนกว่าจะผ่านเกณฑ์บนทุกพื้นผิวที่มันอาจไปวางอยู่ เปลี่ยนจานสีแล้วคอนทราสต์ จะตามไปเอง กฎเกณฑ์และกับดักเบื้องหลัง →
การตรวจสอบ การออกรีลีส และเว็บไซต์นี้
จุดเข้าเดียวรันการตรวจสอบทั้งหมด แต่ละส่วนเห็นสิ่งที่ส่วนอื่นมองไม่เห็น
bash addons/gohud/tools/check_all.sh
| การตรวจสอบ | จับอะไรได้ |
|---|---|
run_tests.sh ที่ขนาดหน้าจอ 4 แบบ | พฤติกรรมและเลย์เอาต์ของวิดเจ็ต ตำแหน่งแบบ RTL โฟกัสจากคีย์บอร์ด คอนทราสต์ของสกินขณะรัน และพรีเซ็ตทุกอัน |
new_project_check.sh | การพึ่งพาโปรเจกต์แม่แบบซ่อนเร้น ใส่ --zip เพื่อตรวจไฟล์รีลีสอย่างที่ส่งมอบจริง ใส่ --export เพื่อตรวจบิลด์ Web |
check_contrast.py | คอนทราสต์ตาม WCAG ของไฟล์ธีมทุกไฟล์ รวมสถานะของปุ่มและพาเนลกึ่งโปร่งใส |
check_generated.py · check_scaffold.sh | ธีมที่สร้างขึ้นตรงกับจานสีของมัน และธีมชั่วคราวหนึ่งธีมสร้างได้และผ่านการวัดคอนทราสต์ |
check_package.py | เวอร์ชันที่อ่านจาก package.json การย้ายบันทึกการเปลี่ยนแปลง และเนื้อในไฟล์ ZIP ทดสอบบนสำเนาชั่วคราว |
check_site.py | ลิงก์ จุดยึด ภาษาของหน้า อภิธานศัพท์ และตารางค่าปรับของเว็บไซต์นี้ |
การออกเวอร์ชัน
cat addons/gohud/package.json # { "version": "1.1.0" }
bash addons/gohud/tools/release.sh # ตรวจทั้งหมด → ZIP → ทดสอบ ZIP นั้นในโปรเจกต์เปล่า
bash addons/gohud/tools/package.sh # 1.1.0 → builds/1.1.0/gohud-1.1.0.zip
เวอร์ชันคือค่าที่เขียนไว้ใน package.json การแพ็กเกจจะไม่เพิ่มเลขให้เองเด็ดขาด
ถ้าจะออกเวอร์ชันใหม่ให้แก้เลขนั้นก่อน การรันที่สำเร็จจะตั้ง plugin.cfg และ
GoUi.VERSION ให้ตรงกับค่านั้น และเฉพาะครั้งแรกที่แพ็กเกจเวอร์ชันนั้นจะย้ายบันทึกในหัวข้อ Unreleased
ของ CHANGELOG.md ไปเป็นรายการที่มีวันที่กำกับ ถ้าแพ็กเกจเวอร์ชันเดิมซ้ำจะสร้างไฟล์ ZIP
ใหม่มาแทนที่ไฟล์เดิม ถ้ารันแล้วล้มเหลวจะไม่มีอะไรเปลี่ยน ไฟล์ ZIP ไม่รวมเว็บไซต์นี้ เทสต์ เครื่องมือต่าง ๆ และ
package.json
เว็บไซต์นี้
python3 addons/gohud/tools/make_site.py # อภิธานศัพท์และตารางค่าปรับของสกิน สร้างจากซอร์สโดยตรง
python3 addons/gohud/tools/check_site.py # ลิงก์ จุดยึด ภาษา อภิธานศัพท์ ตารางที่สร้างขึ้น
bash addons/gohud/tools/site_shots.sh /tmp/shots # ภาพหน้าจอเดสก์ท็อปและมือถือของทุกหน้า
หน้าเว็บทั้งหมดเป็น HTML ธรรมดาใน www/ — ภาษาอังกฤษอยู่ที่ราก ภาษาเกาหลีอยู่ใน ko/
เวิร์กโฟลว์ของ GitHub Actions จะเผยแพร่โฟลเดอร์นั้นเป็นรากของเว็บไซต์