تُطلب الأيقونة باسمها
لا يحمل العنصر صورة أبدًا. هو يطلب اسمًا فقط، ومجموعة الأيقونات المستخدمة تقرر ما يُرسم — بدّل المجموعة فتتغير كل الأيقونات دون أن تلمس سطرًا واحدًا من الكود.
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/؛ أما الخيار الافتراضي «تصدير كل الموارد» فلا يحتاج إلى شيء.كيف يُعثر على الاسم
ترتيب واحد لكل المجموعات، فتعرف مسبقًا أي رسمة تفوز.
- أولًا الرسومات الخاصة بكل مجموعة — المجموعة المستخدمة، ثم كل مجموعة مضافة، ثم احتياطياتها، مستوًى بعد مستوى. الرسمة الخاصة بالمجموعة هي نقش أو مسار أو حرف من خط أيقونات.
- إن لم يرسمها أحد، يُجرَّب اسم بديل:
gearيقود إلىsettings، وxإلىclose. قفزة واحدة فقط. - وإن لم يوجد شيء بعد: مربع فارغ يحتفظ بمكانه.
بفضل هذا الترتيب يبقى السيف المحفور لنمط العصور الوسطى في الأعلى حين تضيف المكتبة — فرسمته الخاصة تُوجد قبل احتياطي أي مجموعة.
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 — واحتفظ بخطوط الأيقونات التجارية داخل لعبتك، لا في نسخة معدّلة تنشرها.