ไอคอนเรียกด้วยชื่อ
วิดเจ็ตไม่เคยถือรูปภาพ มันแค่ถามชื่อ ส่วนจะวาดอะไรนั้นชุดไอคอนที่ใช้อยู่เป็นผู้ตัดสิน — เปลี่ยนชุดเมื่อไร ไอคอนทั้งหมดก็เปลี่ยนตามโดยไม่ต้องแก้โค้ดสักบรรทัด
GoStyle.icon_button(GoIconSet.SETTINGS, open_settings) # a button
slot.icon_name = GoGameIcons.BACKPACK # a quick slot
var mark := GoUi.icons().node(&"cloud_rain", 24) # a bare Control, any size
GoUi.icons() คือชุดที่ใช้อยู่ ชื่อที่มันวาดไม่ได้จะกลายเป็นกล่องว่างที่ยังกินพื้นที่เท่าเดิม และมีคำเตือนในบิลด์ดีบัก ไอคอนหายไปหนึ่งตัวจึงไม่ทำให้แถวเลื่อน
หาไอคอน
ภาพทั้งหมดที่มากับ gohud ค้นด้วยชื่อหรือสิ่งที่ภาพแสดง กรองตามชุดหรือกลุ่ม แล้วเลือกไอคอนเพื่อคัดลอกชื่อ
ชื่อและคำค้นเป็นภาษาอังกฤษในทุกภาษา — เพราะนั่นคือสิ่งที่คุณพิมพ์ในโค้ด
สี่ชุด หาทางเดียว
ทุกชุดตอบการเรียกแบบเดียวกัน ชุดใหญ่จะเพิ่มซ้อนบนชุดที่ใช้อยู่
| ชุด | ชื่อ | ค่าคงที่ | วิธีเปิด |
|---|---|---|---|
| ค่าเริ่มต้น | 84 | GoIconSet | เปิดอยู่เสมอ |
| ยุคกลาง | ภาพสลัก 16 ชิ้น | — | GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) |
| เกม | 187 | GoGameIcons | GoUi.add_icons(GoGameIcons.icon_set()) |
| ไลบรารี | 1,000 | GoIconLibrary | GoUi.add_icons(GoIconLibrary.icon_set()) |
GoUi.add_icons(GoIconLibrary.icon_set()) # the library — and the game set under it
GoUi.add_icons(GoGameIcons.icon_set()) # or the game set alone
ไลบรารีถอยไปหาชุดเกม และชุดเกมถอยไปหาชุดค่าเริ่มต้น บรรทัดเดียวจึงวาดได้ 1,271 ชื่อ ชุดหนึ่งเก็บภาพเป็นพาธ และอ่านไฟล์เฉพาะตอนที่ชื่อนั้นถูกวาดครั้งแรก — การเพิ่มไลบรารีจึงอ่านตารางพาธหนึ่งตาราง (ราว 30 ms บนเดสก์ท็อป) ไม่ใช่เท็กซ์เจอร์ 1,000 ภาพ
addons/gohud/icons/ ด้วย ส่วนค่าเริ่มต้น “export ทุกรีซอร์ส” ไม่ต้องทำอะไรลำดับการหาชื่อ
ทุกชุดใช้ลำดับเดียวกัน คุณจึงรู้ล่วงหน้าว่าภาพไหนจะชนะ
- ภาพของแต่ละชุดเองมาก่อน — ชุดที่ใช้อยู่ ตามด้วยแต่ละชุดที่เพิ่ม แล้วจึงเป็น fallback ของชุดเหล่านั้นทีละชั้น ภาพของชุดเองคือเท็กซ์เจอร์ พาธ หรือ glyph ของไอคอนฟอนต์
- ถ้าไม่มีใครวาดได้ ก็ลองชื่อแฝง:
gearพาไปที่settings,xพาไปที่closeข้ามได้ครั้งเดียว - ถ้ายังไม่มี: กล่องว่างที่ยังกินพื้นที่เท่าเดิม
เพราะลำดับนี้ ดาบสลักของพรีเซ็ตยุคกลางจึงยังอยู่บนสุดเมื่อคุณเพิ่มไลบรารี — ภาพของมันเองถูกพบก่อน fallback ของใคร
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
GoUi.add_icons(GoIconLibrary.icon_set())
GoUi.icons().texture(&"sword") # the medieval engraving — its own drawing comes first
GoUi.icons().texture(&"rocket") # from the game set
GoUi.icons().canonical(&"gear") # &"settings" — an alias
พรีเซ็ต ชุดของคุณ และชุดที่เพิ่ม
สามที่เป็นผู้ตัดสินว่าจะวาดอะไร
| การเรียก | ทำอะไร |
|---|---|
GoUi.use_preset(…) | เปลี่ยนธีม สกิน และชุดไอคอนในครั้งเดียว ล้าง config.icons แต่เก็บ config.extra_icons ไว้ |
GoUi.config.icons = my_set | แทนชุดไอคอนของพรีเซ็ตด้วยชุดของคุณ |
GoUi.add_icons(set) | เพิ่มชุดที่จะถูกค้นต่อจากชุดที่ใช้อยู่ ยังอยู่แม้เปลี่ยนพรีเซ็ต |
ภาพของคุณเอง
ทับชื่อไม่กี่ชื่อ เพิ่มทั้งโฟลเดอร์ หรือเสียบไอคอนฟอนต์ — โค้ดที่เรียกยังเหมือนเดิม
# Override a few names — everything else still comes from the set in use
var mine := GoIconSet.new()
mine.fallback = GoUi.icons()
mine.textures = {GoIconSet.CLOSE: preload("res://art/close.svg")}
GoUi.config.icons = mine
# A folder of drawings — file name = icon name, each read when first drawn
GoUi.config.icons = GoIconSet.from_folder("res://art/icons", GoUi.icons())
- วาดบนตาราง 24×24 ด้วยเส้นสีขาว สีมาจาก
modulateซึ่งทำได้แค่ให้มืดลง — ภาพสีดำจะดำอยู่อย่างนั้นในทุกธีม - นำเข้า SVG เป็น
DPITextureเพื่อให้ยังคมชัดในช่องไอเท็มขนาด 64 dp - ไอคอนไม่กลับด้านในภาษาที่เขียนจากขวาไปซ้าย มีแค่
backกับforwardที่เปลี่ยนทิศ และคุณเลือกมันด้วยชื่อ - ไอคอนฟอนต์ก็ได้: กรอก
fontและcodepointsนอกนั้นไม่มีอะไรเปลี่ยน
ชื่อ กลุ่ม และการค้นหา
กฎที่ชุดที่มากับแพ็กเกจยึดถือ และการเรียกที่ใช้หาชื่อ
- lower_snake_case สิ่งที่วาดอยู่หน้า สถานะอยู่ท้าย:
volume_off,battery_charging,arrow_bar_left - ไม่มีคำนำหน้ากลุ่ม กลุ่มเป็นข้อมูล ชื่อจึงเหมือนเดิมไม่ว่าจะจัดไว้กลุ่มไหน
- ชื่อในไลบรารีคือชื่อของ Tabler ที่เปลี่ยนขีดเป็นขีดล่าง:
cloud-rainบน tabler.io คือcloud_rainที่นี่ ชื่อ Tabler ของภาพที่ gohud มีอยู่แล้วจะพาไปที่ภาพนั้นในฐานะชื่อแฝง (shopping_cart→cart) - คำพ้องความหมายเป็นชื่อแฝง ไม่ใช่ภาพที่สอง
search()
var icons := GoUi.icons()
icons.search("arrow left", 5) # best matches first: back, arrow_bar_left …
icons.search("rain") # cloud_rain, then drawings tagged "rain"
group_names() · names_in_group()
icons.group_names() # every group key, in lookup order
icons.names_in_group(&"weather") # one group, in display order — every set's share of it
icons.group_title(&"weather") # "Weather & sky"
canonical() · has_icon()
icons.canonical(&"gear") # &"settings"
icons.canonical(&"treasure_chest") # &"chest" — Tabler's name for a game drawing
icons.has_icon(&"cloud_rain") # true once the library is added — nothing is loaded to answer
ภาพมาจากไหน
ทั้งหมดเป็น MIT ประกาศติดไปใน ZIP ในชื่อ THIRD_PARTY_NOTICES.md
| ชุด | ที่มา | สัญญาอนุญาต |
|---|---|---|
| ค่าเริ่มต้น | วาดขึ้นเพื่อ gohud | MIT |
| ยุคกลาง | วาดขึ้นเพื่อ gohud | MIT |
| เกม | 171 แบบจาก Tabler Icons 3.46.0 และ 16 แบบวาดขึ้นเพื่อ gohud | MIT |
| ไลบรารี | Tabler Icons 3.46.0 | MIT |
ถ้าเสียบไอคอนของคนอื่น ให้เขียนที่มาไว้ใน GoIconSet.attribution — และเก็บไอคอนฟอนต์เชิงพาณิชย์ไว้ในเกมของคุณ ไม่ใช่ใน fork ที่คุณเผยแพร่