gohud

圖示

用名稱呼叫的圖案 1,287 個 —— 常駐的 84 個、遊戲用的 187 個、圖示庫裡的 1,000 個。在下面找到一個並複製名稱,gohud 的任何控制項都能畫出它。

用名稱呼叫圖示

控制項從不持有圖片。它只詢問名稱,畫什麼由目前使用的圖示集決定 —— 換一套圖示集,所有圖示跟著改變,一行程式碼都不用改。

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 內含的所有圖案。依名稱或外觀搜尋,依圖示集或群組篩選,選取圖示即可複製名稱。

名稱與搜尋詞在任何語言中都保持英文 —— 因為那就是你在程式碼中輸入的文字。

四套圖示集,一條查找路徑

每套圖示集都回應同一個呼叫。大型圖示集疊在目前的圖示集之上使用。

圖示集名稱常數啟用方式
預設84GoIconSet一律啟用
中世紀雕刻圖案 16 張—GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
遊戲187GoGameIconsGoUi.add_icons(GoGameIcons.icon_set())
圖示庫1,000GoIconLibraryGoUi.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/;預設的「匯出所有資源」不需任何動作。

名稱的查找順序

所有圖示集都遵循同一順序,所以你能預先知道哪個圖案勝出。

  1. 先看所有圖示集自己的圖案 —— 目前的圖示集,接著是每個額外的圖示集,再一層層查看它們的後備。圖示集自己的圖案指的是材質、路徑或圖示字型的字符。
  2. 如果都畫不出,就嘗試別名:gear 通往 settings,x 通往 close。只跳一次。
  3. 還是沒有:一個保留位置的空框。

正因為這個順序,在中世紀預設集上加入圖示庫後,雕刻的劍依然在最上層 —— 中世紀圖示集自己的圖案會比任何後備先被找到。

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())

名稱、群組與搜尋

內含圖示集遵循的規則,以及查找名稱的呼叫。

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。聲明以 THIRD_PARTY_NOTICES.md 的形式隨 ZIP 一起發行。

圖示集來源授權
預設為 gohud 繪製MIT
中世紀為 gohud 繪製MIT
遊戲171 個來自 Tabler Icons 3.46.0,16 個為 gohud 繪製MIT
圖示庫Tabler Icons 3.46.0MIT

如果接上他人的圖示,請在 GoIconSet.attribution 寫明來源 —— 商用圖示字型只放在你的遊戲裡,不要放進你公開的分支。