Ikonę wywołuje się po nazwie
Widżet nigdy nie trzyma obrazka. Pyta o nazwę, a to, co zostanie narysowane, wybiera używany zestaw ikon — zmień zestaw, a zmienią się wszystkie ikony bez dotykania choćby linijki kodu.
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() to używany zestaw. Nazwa, której nie potrafi narysować, staje się pustym polem zachowującym miejsce, a w buildach debugowych pojawia się ostrzeżenie — brakująca ikona nigdy nie przesuwa wiersza.
Znajdź ikonę
Wszystkie rysunki dostarczane z gohud. Szukaj po nazwie lub po tym, co przedstawiają, zawęź do zestawu lub grupy i wybierz ikonę, aby skopiować jej nazwę.
Nazwy i słowa wyszukiwania zostają po angielsku w każdym języku — to je wpisujesz w kodzie.
Cztery zestawy, jedno wyszukiwanie
Każdy zestaw odpowiada na to samo wywołanie. Duże zestawy dodaje się na wierzch używanego.
| Zestaw | Nazwy | Stałe | Jak włączyć |
|---|---|---|---|
| Domyślny | 84 | GoIconSet | Zawsze włączony |
| Średniowieczny | 16 grawerowanych | — | GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK) |
| Gry | 187 | GoGameIcons | GoUi.add_icons(GoGameIcons.icon_set()) |
| Biblioteka | 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
Biblioteka sięga do zestawu gier, a ten do domyślnego, więc jedna linijka udostępnia 1 271 nazw. Zestaw trzyma rysunki jako ścieżki i czyta plik dopiero wtedy, gdy nazwa jest rysowana po raz pierwszy: dodanie biblioteki wczytuje tabelę ścieżek (ok. 30 ms na komputerze), a nie 1 000 tekstur.
addons/gohud/icons/; domyślny „eksport wszystkich zasobów” niczego nie wymaga.Jak szuka się nazwy
Jedna kolejność dla wszystkich zestawów, więc wiadomo, który rysunek wygra.
- Najpierw własne rysunki każdego zestawu — używanego, potem każdego dodanego, a dalej ich zestawów zapasowych, poziom po poziomie. Własny rysunek zestawu to tekstura, ścieżka albo glif fontu ikon.
- Jeśli nikt go nie narysował, próbuje się aliasu:
gearprowadzi dosettings,xdoclose. Tylko jeden przeskok. - Nadal nic: puste pole zachowujące miejsce.
To dzięki tej kolejności grawerowany miecz średniowiecznego presetu zostaje na wierzchu po dodaniu biblioteki — jego własny rysunek znajduje się przed czyimkolwiek zapasowym.
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
Presety, własny zestaw i dodatkowe zestawy
O tym, co zostanie narysowane, decydują trzy miejsca.
| Wywołanie | Co robi |
|---|---|
GoUi.use_preset(…) | Motyw, skórka i zestaw ikon za jednym razem. Czyści config.icons, zachowuje config.extra_icons. |
GoUi.config.icons = my_set | Zastępuje zestaw ikon presetu twoim. |
GoUi.add_icons(set) | Dodaje zestaw sprawdzany po używanym. Przetrwa zmianę presetu. |
Własne rysunki
Nadpisz kilka nazw, dodaj cały folder albo podłącz font ikon — kod wywołujący się nie zmienia.
# 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())
- Rysuj na siatce 24×24 białą linią. Kolor nadaje
modulate, który potrafi tylko przyciemniać — czarny rysunek zostanie czarny w każdym motywie. - Importuj pliki SVG jako
DPITexture, aby były ostre w polu ekwipunku o rozmiarze 64 dp. - Ikony nigdy nie odbijają się w językach pisanych od prawej do lewej. Kierunek zmieniają tylko
backiforward, a te wybierasz po nazwie. - Działa też font ikon: wypełnij
fonticodepoints. Nic innego się nie zmienia.
Nazwy, grupy i wyszukiwanie
Zasady, których trzymają się dołączone zestawy, i wywołania, które znajdują nazwę.
- lower_snake_case: najpierw to, co narysowane, na końcu stan:
volume_off,battery_charging,arrow_bar_left. - Bez prefiksów grup. Grupy to dane, więc nazwa pozostaje ta sama, gdziekolwiek ją przypisano.
- Nazwy z biblioteki to nazwy Tablera z podkreślnikami:
cloud-rainz tabler.io to tutajcloud_rain. Nazwy Tablera rysunków, które gohud już miał, prowadzą do nich jako aliasy (shopping_cart→cart). - Synonim to alias, nigdy drugi rysunek.
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
Skąd pochodzą rysunki
Wszystko jest na MIT. Informacje jadą w ZIP-ie jako THIRD_PARTY_NOTICES.md.
| Zestaw | Źródło | Licencja |
|---|---|---|
| Domyślny | Narysowane dla gohud | MIT |
| Średniowieczny | Narysowane dla gohud | MIT |
| Gry | 171 z Tabler Icons 3.46.0, 16 narysowanych dla gohud | MIT |
| Biblioteka | Tabler Icons 3.46.0 | MIT |
Jeśli podłączasz cudze ikony, wpisz ich źródło w GoIconSet.attribution — a komercyjne fonty ikon trzymaj w swojej grze, nie w publikowanym forku.