เมื่อก่อนการเพิ่มธีมหนึ่งธีมหมายถึงต้องแก้ด้วยมือถึงสี่ที่ — จานสีของตัวสร้าง รูปทรง สกิน และรีซอร์สพรีเซ็ต ตอนนี้คำสั่งเดียวจัดการให้ครบทุกที่
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # ไฟล์ธีม .tres + ภาพของคอนโทรล
godot --headless --path . --import # อิมพอร์ตภาพใหม่หนึ่งครั้ง
GoUi.use_preset(&"neon") # เสร็จแล้ว — และมันโผล่ในตัวเลือกด้วย
บรรทัดแรกเขียนไฟล์ themes/palettes/neon.json และ themes/presets/neon.tres
ตัว JSON บรรจุทุกค่าของธีมที่มันสืบทอดมาไว้อย่างละเอียดครบถ้วน มันจึงทำหน้าที่เป็นรายการของ
สิ่งที่คุณเปลี่ยนได้ไปในตัว: ลบคีย์ทิ้งเพื่อคงค่าของธีมแม่ หรือเขียนคีย์ลงไปเพื่อเขียนทับ พรีเซ็ตถูกค้นหา
ด้วยการสแกนโฟลเดอร์ themes/presets/ จึงไม่ต้องแก้โค้ดทะเบียนใด ๆ — และดรอปดาวน์
ในการตั้งค่าโปรเจกต์ก็มองเห็นมันเช่นกัน
อะไรเปลี่ยนได้บ้าง — รวมไว้ในหน้าเดียว
| ที่ไหน | อะไร | อย่างไร |
|---|---|---|
from | ธีมแม่ | dark · light · scifi_dark · medieval_dark · … หรือธีม JSON อื่น คีย์ที่ละไว้จะสืบทอดค่าของมัน ส่วนการสืบทอดที่วนเป็นวงจะล้มเหลว |
palette | พื้นหลัง · พื้นผิวสามชั้น · เส้นขอบ · ตัวอักษรสามโทน · สีเน้น · สีสถานะสี่สี · สคริม · เงา · รางของแถบ | "#RRGGBB" ส่วนค่าอัลฟาเขียนเป็น "#RRGGBB@0.35" |
สีสดที่ใช้เติมอย่างเดียว *_vivid | ทำให้แถบยังคงสีสดแม้สีตัวอักษรจะต้องเข้มลง ถ้าลืมใส่ตัวใดตัวสร้างจะบอกให้รู้ | |
| ความอ่านง่าย | ไม่ต้องจูนด้วยมือ ตัวอักษร เส้นขอบ สีเน้น และป้ายข้อความที่อยู่บนมัน ถูกตัวสร้างดันค่าจนผ่านเกณฑ์ — เปลี่ยนแค่สีเน้น การตรวจก็ยังผ่านอยู่ดี | |
shape | kind | flat (มุมมน) · cut (มุมตัดเฉียง) · medieval (กรอบตีขึ้นรูป) |
| ขนาดต่าง ๆ | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — โทเคนจะตามไปด้วย พาเนลกับการคำนวณของวิดเจ็ตจึงไม่มีทางขัดกัน | |
เฉพาะ cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
เฉพาะ medieval | material (0 เหล็ก · 1 หนัง · 2 กระดาษหนัง) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button ที่จับคู่กับไฟล์ฟอนต์ res:// ภายในแอดออน | |
skin | base — ตระกูลของที่ที่โค้ดวาดเอง (จอยสติ๊ก สล็อต แบดจ์ วงแหวนโค้ชมาร์ก ชิป เส้นคั่น) | default · scifi · medieval |
dials — ตัวเลขของที่เหล่านั้น: ความหนาและสีอ่อนของขอบสล็อต ระยะขอบในของแบดจ์ ความทึบของชิปและกล่องแจ้งเตือน ความหนาและความทึบของวงแหวนจอยสติ๊ก ขนาดมุมตัดเฉียงแบบไซไฟ แสงเรือง และวงเล็บ | ทุกค่าของธีมแม่ถูกเขียนไว้ครบใน JSON ตัวสร้างจะเขียนมันลงใน themes/skins/gohud_skin_<id>.tres — โดยไม่แตะโค้ดสกินเลย จะรัน --new-skin ซึ่งวางโครงซับคลาส GoSkin ให้ ก็ต่อเมื่อคุณต้องการเปลี่ยนตัวภาพวาดเองเท่านั้น | |
icons | ชุดไอคอน | พาธแบบ res:// ที่ชี้ไปยังรีซอร์ส GoIconSet — ถ้าละไว้จะรับมาจากธีม JSON แม่ |
dark · title | ตัวเลือกจะแสดงมันอย่างไร | บูลีน · สตริง |
ค่าปรับทุกตัว
ตารางด้านล่างถูกเติมโดย tools/make_site.py ตรงจากบรรทัด @export
ของสคริปต์สกิน — เพิ่มค่าปรับหรือแก้ค่าเริ่มต้นแล้วตารางตามไปเอง ใช้ชื่อเหล่านี้ใต้
skin.dials ใน JSON ค่าปรับที่ค่าเริ่มต้นเขียนว่า 14 เป็นจำนวนเต็ม ส่วนที่เขียนว่า
10.0 เป็นทศนิยม — เขียนแบบไหนลงใน JSON ก็ได้ ตัวสร้างจะแปลงให้ตรงกับชนิดในสคริปต์เอง
สกินค่าเริ่มต้น GoSkin — 17
| ค่าปรับ | ค่าเริ่มต้น | กำหนดอะไร |
|---|---|---|
chip_fill_alpha | 0.16 | ความทึบของสีเติมในพาเนลของชิป |
chip_edge_alpha | 0.45 | ความทึบของขอบพาเนลของชิป |
alert_tint | 0.1 | พาเนลของกล่องแจ้งเตือนถูกย้อมเข้าหาสีสถานะของมันมากแค่ไหน |
slot_tint_lit | 0.24 | ระดับการย้อมสีเน้นบนพาเนลของควิกสล็อตขณะที่คูลดาวน์กำลังเดิน |
slot_tint_idle | 0.08 | ระดับการย้อมสีเน้นบนพาเนลของควิกสล็อตในสภาวะปกติ |
slot_border_lit | 2 | ความหนาของขอบควิกสล็อต (dp) ขณะที่คูลดาวน์กำลังเดิน |
slot_border_idle | 1 | ความหนาของขอบควิกสล็อต (dp) ในสภาวะปกติ |
badge_pad_x | 5 | ระยะขอบในแนวนอน (dp) ของแบดจ์ (จำนวน เวลาที่เหลือ) |
badge_pad_y | 1 | ระยะขอบในแนวตั้ง (dp) ของแบดจ์ |
badge_edge_alpha | 0.6 | ความทึบของขอบพาเนลของแบดจ์ |
float_shadow_alpha | 0.45 | ความทึบของเงาใต้การ์ดที่ลอยอยู่ (โค้ชมาร์ก พรอมต์การ์ด) |
float_shadow_size | 14 | ความฟุ้งของเงา (dp) ใต้การ์ดที่ลอยอยู่ |
float_shadow_lift | 4 | ระยะที่เงาของการ์ดลอยเยื้องลงล่าง (dp) |
float_glow_size | 10.0 | ระยะแสงเรือง (dp) ของพาเนลลอยที่ใช้แสงเรืองแทนเงา เช่นพาเนลมุมตัดเฉียงแบบไซไฟ |
joystick_base_alpha | 0.42 | ความทึบของแผ่นวงกลมฐานของจอยสติ๊ก |
joystick_ring_alpha | 0.45 | ความทึบของวงแหวนจอยสติ๊ก |
joystick_ring_width | 2.0 | ความหนา (dp) ของวงแหวนจอยสติ๊ก |
สกินไซไฟ GoSkinSciFi — 10
| ค่าปรับ | ค่าเริ่มต้น | กำหนดอะไร |
|---|---|---|
cut_chip | 7.0 | ขนาดมุมตัดเฉียง (dp) ของพาเนลของชิป |
cut_skeleton | 5.0 | ขนาดมุมตัดเฉียง (dp) ของพาเนลสเกเลตัน |
cut_alert | 8.0 | ขนาดมุมตัดเฉียง (dp) ของกล่องแจ้งเตือน |
cut_segment | 8.0 | ขนาดมุมตัดเฉียง (dp) ของคอนโทรลแบบแบ่งช่อง |
cut_slot | 6.0 | ขนาดมุมตัดเฉียง (dp) ของพาเนลควิกสล็อต |
cut_disc_ratio | 0.24 | มุมตัดเฉียงของอวาตาร์และแผ่นวงกลม = เส้นผ่านศูนย์กลาง × อัตราส่วนนี้ |
slot_glow_alpha | 0.45 | ความทึบของแสงเรืองบนสล็อตที่คูลดาวน์กำลังเดิน |
slot_glow_size | 6.0 | ระยะแสงเรือง (dp) ของสล็อตที่คูลดาวน์กำลังเดิน |
bracket_arm | 12.0 | ความยาวแขน (dp) ของวงเล็บเล็งเป้าของโค้ชมาร์ก |
bracket_thickness | 2.0 | ความหนาของเส้น (dp) ของวงเล็บเล็งเป้าของโค้ชมาร์ก |
สกินยุคกลาง GoSkinMedieval — 5
| ค่าปรับ | ค่าเริ่มต้น | กำหนดอะไร |
|---|---|---|
slot_radius | 4.0 | รัศมีมุม (dp) ของกรอบควิกสล็อตแบบยุคกลาง |
leather_grain_alpha | 0.035 | ความทึบของรอยหนังจาง ๆ ภายในควิกสล็อต |
ornament_scale | 1.0 | สเกลของลวดลายโลหะที่มุมของควิกสล็อต ส่วนกรอบเมนูใช้ shape.ornament_scale |
bevel_strength | 0.18 | ความเข้มของแสงไฮไลต์โลหะตามขอบควิกสล็อต |
slot_rivets | 1 | แสดงหมุดย้ำโลหะเล็ก ๆ บนควิกสล็อต: 0 คือซ่อน 1 คือแสดง |
สืบทอดสกิน (ไม่บังคับ)
สิ่งที่ธีมและรูปทรงเอื้อมไม่ถึงเท่านั้น — หกเหลี่ยมของจอยสติ๊ก แบดจ์บนสล็อต วงเล็บเล็งเป้าของ
โค้ชมาร์ก — ที่อยู่ในสกิน สืบทอด GoSkin เขียนทับเฉพาะเมธอดเหล่านั้น แล้วชี้ช่อง
skin ใน JSON ไปที่รีซอร์สนั้น ธีมที่เปลี่ยนแค่สีข้ามขั้นตอนนี้ไปได้เลย
tools/check_scaffold.sh สร้างธีมใช้แล้วทิ้ง
ขึ้นมาทุกครั้งที่รัน — เปลี่ยนสีเน้น ตั้งรัศมีเป็น 4 — แล้วตรวจการสร้าง การกระจายของโทเคน และการวัด
คอนทราสต์ให้ผ่านหมดก่อนจะลบมันทิ้ง การรันครั้งแรกพบว่าธีมที่เปลี่ยนแค่สีเน้นอย่างเดียวตกไปถึง
8 คู่สี: ตัวสร้างดันสีตัวอักษรให้ แต่ใช้สีเน้นตามที่เขียนมาดื้อ ๆ ตอนนี้มันดันทั้งสีเน้นและ
ป้ายข้อความที่อยู่บนมันด้วย