gohud

所有控制項

gohud 的所有控制項與版面配置,依名稱列出,並附可直接貼上的範例。每一個都會套用目前預設的外觀。 ← 控制項

版面配置 (15)

GoScaffold

GoScaffold — 一次組好 App 畫面:頂欄、捲動頁面、底欄、FAB 與抽屜。

一次組好 App 畫面:頂欄、捲動頁面、底欄、FAB 與抽屜。

繼承 Control

var page := GoStyle.column()
var screen := GoScaffold.make("Inbox", page, true)
screen.set_fab(GoFab.make(GoIconSet.EDIT))
add_child(screen)

GoTopBar

GoTopBar — 沿頂邊排列的 1~3 個槽位,中間槽始終置中。

沿頂邊排列的 1~3 個槽位,中間槽始終置中。

繼承 GoEdgeBar

var bar := GoTopBar.make(3)
bar.add_start(GoStyle.icon_button(GoIconSet.BACK, go_back, -1, &"back"))
bar.add_center(GoStyle.label("Stage 3"))
bar.add_end(GoStyle.chip("1,250"))

GoBottomBar

GoBottomBar — 沿底邊排列,避開手勢列。

沿底邊排列,避開手勢列。

繼承 GoEdgeBar

var actions := GoBottomBar.make(1, GoBottomBar.Justify.SPACE_BETWEEN)
for name in ["Attack", "Guard", "Run"]: actions.add_start(GoStyle.button(name))
screen.add_child(actions)

GoLeftSideBar

GoLeftSideBar — 沿左邊最多三層。

沿左邊最多三層。

繼承 GoSideBar

var tools := GoLeftSideBar.make(3)
tools.add_start(GoStyle.icon_button(GoIconSet.MENU, open_menu, -1, &"menu"))
tools.add_end(GoStyle.icon_button(GoIconSet.USER, open_profile, -1, &"profile"))
screen.add_child(tools)

GoRightSideBar

GoRightSideBar — 沿右邊最多三層。

沿右邊最多三層。

繼承 GoSideBar

var tools := GoRightSideBar.make(3)
tools.add_start(GoStyle.icon_button(GoIconSet.SETTINGS, open_settings, -1, &"settings"))
tools.add_center(GoStyle.icon_button(GoIconSet.SEARCH, find, -1, &"search"))
screen.add_child(tools)

GoSideBar

GoSideBar — 上面兩者的基礎側欄;在由右至左的語言中也保持原側。

上面兩者的基礎側欄;在由右至左的語言中也保持原側。

繼承 GoEdgeBar

var rail := GoRightSideBar.make(1, GoSideBar.Justify.CENTER)
rail.add_start(GoStyle.icon_button(GoIconSet.MAP, open_map, -1, &"map"))

GoEdgeBar

GoEdgeBar — 所有邊欄共用的規則:槽位、平均分布、貼邊與安全區域。

所有邊欄共用的規則:槽位、平均分布、貼邊與安全區域。

繼承 Container

var bar := GoTopBar.make(1)
bar.justify = GoEdgeBar.Justify.SPACE_BETWEEN
bar.pin_to_edge = GoEdgeBar.Pin.ALWAYS

GoGrid

GoGrid — 寬度完全相同的欄——固定數量,或能放多少放多少。

寬度完全相同的欄——固定數量,或能放多少放多少。

繼承 Container

var cards := GoGrid.make(1, 160.0)
for item in items: cards.add_child(GoStyle.item_card(item))

GoForm

GoForm — 限制寬度並避開鍵盤與 HUD 的表單。

限制寬度並避開鍵盤與 HUD 的表單。

繼承 MarginContainer

var form := GoForm.new()
form.avoid_hud = true
form.add_child(GoScroll.new())
add_child(form)

GoScroll

GoScroll — 從內容任意位置都能觸控捲動,支援由右至左的語言。

從內容任意位置都能觸控捲動,支援由右至左的語言。

繼承 ScrollContainer

var list := GoScroll.new()
list.add_child(GoStyle.column())
var strip := GoScroll.horizontal()

GoHudAnchor

GoHudAnchor — 把 HUD 元件固定在安全區域的九個位置之一。

把 HUD 元件固定在安全區域的九個位置之一。

繼承 Control

var corner := GoHudAnchor.new()
corner.spot = GoHudAnchor.Spot.TOP_LEFT
corner.add_child(GoStyle.hud_panel())

GoStyle.column · row · wrap_row

GoStyle.column · row · wrap_row — 使用主題間距的欄、列與自動換行的列。

使用主題間距的欄、列與自動換行的列。

所屬 GoStyle

var page := GoStyle.column()
var line := GoStyle.row()
var chips := GoStyle.wrap_row()

GoStyle.responsive_grid · aspect

GoStyle.responsive_grid · aspect — 變寬時增加欄的網格,以及保持比例的方塊。

變寬時增加欄的網格,以及保持比例的方塊。

所屬 GoStyle

var tiles := GoStyle.responsive_grid(160)
var thumb := GoStyle.aspect(16.0 / 9.0)

GoStyle.padding · spacer · divider

GoStyle.padding · spacer · divider — 內距、佔滿剩餘空間的間隔與分隔線。

內距、佔滿剩餘空間的間隔與分隔線。

所屬 GoStyle

var pad := GoStyle.padding(16)
line.add_child(GoStyle.spacer())
page.add_child(GoStyle.divider())

GoStyle.foldable · section

GoStyle.foldable · section — 區段標題,以及可展開收合的區段。

區段標題,以及可展開收合的區段。

所屬 GoStyle

page.add_child(GoStyle.section("Sound", false))
var more := GoStyle.foldable("Advanced", true, null, false)

視窗與浮層 (12)

GoSurface

GoSurface — 浮動視窗——置中、從底部彈出,或貼靠某個控制項。

浮動視窗——置中、從底部彈出,或貼靠某個控制項。

繼承 Control

var window := GoSurface.new()
window.set_title("Settings")
window.close_requested.connect(window.queue_free)
layer.add_child(window)

GoSheet

GoSheet — 具分頁、返回導覽與固定底欄的底部面板。

具分頁、返回導覽與固定底欄的底部面板。

繼承 CanvasLayer

var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Inventory")
sheet.body.add_child(bag_list)

GoPage

帶分類欄(橫向在左、直向為頂部分頁)、預覽、返回以及在頁內推入的子頁面的全螢幕頁面。

繼承 CanvasLayer

var page := GoPage.new()
add_child(page)
page.open("Settings")
page.set_tabs([{id = &"sound", label = "Sound", icon = GoIconSet.VOLUME_HIGH, badge = ""}])
page.push("About", func(box: VBoxContainer) -> void: box.add_child(GoStyle.label("Version 1.0")))

GoDialogs

GoDialogs — 可 await 的確認與提示視窗;提示會排隊等候。

可 await 的確認與提示視窗;提示會排隊等候。

繼承 Node

var dialogs := GoDialogs.new()
add_child(dialogs)
if await dialogs.confirm("Delete save", "This cannot be undone.", "", "", "", {}, true):
	delete_save()

GoDialogs.choose

GoDialogs.choose — 從幾項中選一項——手機上是底部面板,桌面上是卡片。

從幾項中選一項——手機上是底部面板,桌面上是卡片。

所屬 GoDialogs

var index := await dialogs.choose("Sort by", ["Newest", "Price", "Rating"])
if index >= 0: sort_by(index)

GoDrawer

GoDrawer — 從左側或右側滑入的面板。

從左側或右側滑入的面板。

繼承 CanvasLayer

var drawer := GoDrawer.new()
add_child(drawer)
drawer.side = GoDrawer.Side.RIGHT
drawer.open("Bag")

GoPopover

GoPopover — 在被點按之處旁邊彈出的資訊卡,一次一張。

在被點按之處旁邊彈出的資訊卡,一次一張。

繼承 RefCounted

GoPopover.open(slot, GoStyle.item_card(item, false))

GoContextMenu

GoContextMenu — 長按或右鍵彈出選單;手指一移動就取消。

長按或右鍵彈出選單;手指一移動就取消。

繼承 RefCounted

GoContextMenu.attach(slot, [{"text": "Use"}, {"text": "Drop", "danger": true}])

GoCoachMark

GoCoachMark — 指向真實控制項的引導教學。

指向真實控制項的引導教學。

繼承 Control

var tour := GoCoachMark.new()
add_child(tour)
tour.start([{"target": bag_button, "title": "Bag", "body": "Your items live here."}])

GoConsole

GoConsole — 具指令與歷史紀錄的開發者主控台;正式版中關閉。

具指令與歷史紀錄的開發者主控台;正式版中關閉。

繼承 CanvasLayer

var console := GoConsole.new()
add_child(console)
console.register("give", "Grant an item", give_item)

GoRibbonHeader

懸在卡片上緣的畫面標題緞帶,附圖示字形與外觀的角落圖案。

繼承 Control

var header := GoRibbonHeader.make("PAUSED", GoIconSet.PAUSE)
card_column.add_child(header)

GoFitBox

讓整張卡片留在畫面內:太大時連同緞帶一起縮小,長清單則改為捲動。

繼承 Container

var fit := GoFitBox.new()
fit.add_child(card)

訊息與等待 (12)

GoSnackbar

GoSnackbar — 底部訊息,可排隊,也可帶按鈕。

底部訊息,可排隊,也可帶按鈕。

繼承 Node

var snack := GoSnackbar.new()
add_child(snack)
if await snack.post({"text": "Item dropped", "actions": ["Undo"]}) == 0:
	restore_item()

GoNotice

GoNotice — 絕不搶占輸入或焦點的提示。

絕不搶占輸入或焦點的提示。

繼承 PanelContainer

var notice := GoNotice.new()
hud.add_child(notice)
notice.show_text("Saved", GoTheme.SUCCESS)

GoPromptCard

GoPromptCard — 不打斷遊戲的詢問——邀請、交易。

不打斷遊戲的詢問——邀請、交易。

繼承 PanelContainer

var invite := GoPromptCard.new()
invite.set_title("Party invite from Ann")
invite.set_actions([{"text": "Accept", "action": accept, "primary": true}])

GoBanner

GoBanner — 一直留在頁面上直到被處理的訊息。

一直留在頁面上直到被處理的訊息。

繼承 PanelContainer

var offline := GoBanner.make("You're offline.", [{"text": "Retry", "action": reconnect}], GoIconSet.WARNING)
page.add_child(offline)

GoSpinner

GoSpinner — 等待指示;把按鈕原地變成轉圈,避免被按兩次。

等待指示;把按鈕原地變成轉圈,避免被按兩次。

繼承 Control

GoSpinner.busy(buy_button, true)
await shop.buy(item)
GoSpinner.busy(buy_button, false)

GoBadge

GoBadge — 未讀圓點、NEW 標籤與 99+,掛在角上。

未讀圓點、NEW 標籤與 99+,掛在角上。

繼承 PanelContainer

GoBadge.attach(mail_button, unread)
GoBadge.attach(shop_button, 0, "NEW")

GoProgress

GoProgress — 線形或環形進度,波浪或平直;不知總量時為不確定狀態。

線形或環形進度,波浪或平直;不知總量時為不確定狀態。

繼承 Control

var upload := GoProgress.linear()
upload.value = 0.4
var ring := GoProgress.circular(true)

GoLoadingIndicator

GoLoadingIndicator — 會變形的 Material 3 Expressive 等待標記;開啟 reduce_motion 時靜止。

會變形的 Material 3 Expressive 等待標記;開啟 reduce_motion 時靜止。

繼承 Control

var wait := GoLoadingIndicator.new()
wait.contained = true
page.add_child(wait)

GoRefresh

GoRefresh — 在清單頂端向下拉即可重新整理。

在清單頂端向下拉即可重新整理。

繼承 Control

var refresh := GoRefresh.attach(feed)
refresh.refresh_requested.connect(func() -> void:
	await reload_posts()
	refresh.finish())

GoStyle.alert

GoStyle.alert — 資訊、成功、警告或危險色調的內嵌訊息。

資訊、成功、警告或危險色調的內嵌訊息。

所屬 GoStyle

page.add_child(GoStyle.alert("Maintenance at 3 AM", GoTheme.WARNING))

GoStyle.skeleton · empty_state

GoStyle.skeleton · empty_state — 載入時的佔位,以及空清單的提示。

載入時的佔位,以及空清單的提示。

所屬 GoStyle

page.add_child(GoStyle.skeleton(200))
page.add_child(GoStyle.empty_state(GoIconSet.BOX, "No items yet", false))

GoStyle.tooltip_node

GoStyle.tooltip_node — 主題樣式的工具提示,不會把單字拆開。

主題樣式的工具提示,不會把單字拆開。

所屬 GoStyle

func _make_custom_tooltip(text: String) -> Object:
	return GoStyle.tooltip_node(text)

按鈕、標籤與選擇 (10)

GoStyle.button

GoStyle.button — 七種色調的按鈕:一般、主要、外框、文字、精簡、危險與實心危險。

七種色調的按鈕:一般、主要、外框、文字、精簡、危險與實心危險。

所屬 GoStyle

row.add_child(GoStyle.button("Play", play, GoStyle.Tone.PRIMARY))
row.add_child(GoStyle.button("Details", open_details, GoStyle.Tone.OUTLINED))
row.add_child(GoStyle.button("Skip", skip, GoStyle.Tone.BARE))

GoStyle.glow

GoStyle.glow — 為實心按鈕加光暈,使其浮起。

為實心按鈕加光暈,使其浮起。

所屬 GoStyle

row.add_child(GoStyle.glow(GoStyle.button("Play", play, GoStyle.Tone.PRIMARY)))

GoIconButton

GoIconButton — 僅圖示的按鈕:看起來小,可點區域 48dp,帶螢幕閱讀器名稱。

僅圖示的按鈕:看起來小,可點區域 48dp,帶螢幕閱讀器名稱。

繼承 Button

row.add_child(GoStyle.icon_button(GoIconSet.CLOSE, close, -1, &"close"))
var bell := GoIconButton.new()
bell.icon_name = GoIconSet.BELL

GoGlyphButton

圖示緊挨著文字的按鈕,街機選單裡那種亮面膠囊。

繼承 Button

row.add_child(GoGlyphButton.make("Play", GoIconSet.PLAY, GoTheme.VAR_PRIMARY_BUTTON))

GoStyle.chip

GoStyle.chip — 文字始終清晰可讀的狀態或標籤膠囊。

文字始終清晰可讀的狀態或標籤膠囊。

所屬 GoStyle

row.add_child(GoStyle.chip("Rare", GoUi.color(GoTheme.INFO)))

GoStyle.filter_chip · input_chip

GoStyle.filter_chip · input_chip — 可開關的標籤,以及帶 ✕ 的已輸入值。

可開關的標籤,以及帶 ✕ 的已輸入值。

所屬 GoStyle

filters.add_child(GoStyle.filter_chip("In stock", false, refilter))
to.add_child(GoStyle.input_chip("Ann", remove_ann, GoIconSet.USER))

GoStyle.segmented

GoStyle.segmented — 從幾項中恰選一項,連成一列。

從幾項中恰選一項,連成一列。

所屬 GoStyle

page.add_child(GoStyle.segmented(["Day", "Week", "Month"], 0, show_range))

GoStyle.choice_grid

GoStyle.choice_grid — 從網格中挑選一個色塊——顏色或外觀。

從網格中挑選一個色塊——顏色或外觀。

所屬 GoStyle

var skins := GoStyle.choice_grid([{"color": "f6cfae", "tooltip": "Peach"},
	{"color": "8d5a36", "tooltip": "Cocoa"}], 0, pick_skin)

GoStyle.radio_group

GoStyle.radio_group — 只能選其一的選項按鈕。

只能選其一的選項按鈕。

所屬 GoStyle

page.add_child(GoStyle.radio_group(["Easy", "Normal", "Hard"], 1))

GoStyle.toggle · checkbox

GoStyle.toggle · checkbox — 附標籤的開關與核取方塊。

附標籤的開關與核取方塊。

所屬 GoStyle

var music := GoStyle.toggle("Music", false)
var terms := GoStyle.checkbox("I agree to the terms", false)

輸入與選擇器 (14)

GoStyle.line_edit · textarea

GoStyle.line_edit · textarea — 單行與多行文字方塊。

單行與多行文字方塊。

所屬 GoStyle

var nickname := GoStyle.line_edit("Your name")
var note := GoStyle.textarea("Message", 4)

GoField

GoField — 標籤、控制項與提示,錯誤顯示在出錯的欄位下方。

標籤、控制項與提示,錯誤顯示在出錯的欄位下方。

繼承 VBoxContainer

var field := GoField.make("Nickname", GoStyle.line_edit(), "3–12 letters", false)
field.set_error("That name is taken")

GoInputGroup

GoInputGroup — 把輸入框與按鈕焊接成一個整體。

把輸入框與按鈕焊接成一個整體。

繼承 HBoxContainer

var chat := GoInputGroup.make(GoStyle.line_edit("Message"), {"suffix": GoStyle.button("Send", send)})

GoCombobox

GoCombobox — 不僅從開頭、也能在名稱中間搜尋的選擇器。

不僅從開頭、也能在名稱中間搜尋的選擇器。

繼承 Button

var friend := GoCombobox.make(friends, -1, "Find a friend")
friend.picked.connect(invite)

GoCodeInput

GoCodeInput — 以格子顯示的優惠碼與禮物碼;貼上與輸入法照常可用。

以格子顯示的優惠碼與禮物碼;貼上與輸入法照常可用。

繼承 VBoxContainer

var coupon := GoCodeInput.make(12, 4)
coupon.completed.connect(redeem)

GoStyle.select · dropdown

GoStyle.select · dropdown — 下拉清單,以及開啟選單的按鈕。

下拉清單,以及開啟選單的按鈕。

所屬 GoStyle

var quality := GoStyle.select(["Low", "Medium", "High"])
var sort := GoStyle.dropdown("Sort", ["Newest", "Price"], sort_by)

GoStyle.slider

GoStyle.slider — 主題樣式的滑桿。

主題樣式的滑桿。

所屬 GoStyle

var volume := GoStyle.slider(0.0, 1.0, 0.05)
volume.value_changed.connect(set_volume)

GoRangeSlider

GoRangeSlider — 兩個不會交叉的滑鈕——價格或等級範圍。

兩個不會交叉的滑鈕——價格或等級範圍。

繼承 Control

var price := GoRangeSlider.make(0.0, 500.0, 40.0, 220.0, 10.0)
price.change_ended.connect(func(low: float, high: float) -> void: refilter(low, high))

GoSlider

手繪風格的滑桿:填色越過滑鈕一點,按住時滑鈕變大。

繼承 HSlider

var music := GoSlider.make(0.0, 1.0, 0.01)
music.theme_type_variation = &"GoSliderGreen"

GoSwitch

手繪風格的開關,滑鈕旁顯示 ON / OFF。

繼承 CheckButton

var vibration := GoSwitch.make(true)
vibration.set_texts(tr("ON"), tr("OFF"))

GoDatePicker

GoDatePicker — 點選的月曆;開啟 range_mode 可選日期範圍。

點選的月曆;開啟 range_mode 可選日期範圍。

繼承 Container

var stay := GoDatePicker.make()
stay.range_mode = true
stay.range_picked.connect(func(start: Dictionary, end: Dictionary) -> void: book(start, end))

GoTimePicker

GoTimePicker — 時鐘錶盤:先選小時再選分鐘;12 或 24 小時;方框上可用上下鍵。

時鐘錶盤:先選小時再選分鐘;12 或 24 小時;方框上可用上下鍵。

繼承 Container

var alarm := GoTimePicker.make(7, 30, func(hour: int, minute: int) -> void: set_alarm(hour, minute))
alarm.use_24h = true

GoWheelPicker

GoWheelPicker — 會轉動並把一項停在中間色帶上的滾輪。

會轉動並把一項停在中間色帶上的滾輪。

繼承 Control

var amount := GoWheelPicker.make(["x1", "x5", "x10", "x50"], 0, set_amount)
row.add_child(amount)

GoStepper

GoStepper — 附「下一步/上一步」的編號步驟,縱向或橫向排列。

附「下一步/上一步」的編號步驟,縱向或橫向排列。

繼承 VBoxContainer

var checkout := GoStepper.make([{"title": "Cart", "content": cart}, {"title": "Pay", "content": pay}])
checkout.finished.connect(place_order)

清單、卡片與資料 (8)

GoStyle.list_row · list_button

GoStyle.list_row · list_button — 附圖示、標題、摘要與尾端標記的清單列。

附圖示、標題、摘要與尾端標記的清單列。

所屬 GoStyle

page.add_child(GoStyle.list_button(GoIconSet.SETTINGS, "Settings", open_settings, Color.TRANSPARENT, "", false))

GoListView

GoListView — 成千上萬列,只建立可見的列。

成千上萬列,只建立可見的列。

繼承 GoScroll

var feed := GoListView.make(10000, 72.0, func(index: int) -> Control: return post_row(posts[index]))
feed.end_reached.connect(load_more)

GoReorderList

GoReorderList — 用拖曳控點或長按拖動來排序的列。

用拖曳控點或長按拖動來排序的列。

繼承 Container

var queue := GoReorderList.make([intro_row, theme_row, boss_row])
queue.reordered.connect(func(from: int, to: int) -> void: songs.insert(to, songs.pop_at(from)))

GoSwipeRow

GoSwipeRow — 側滑即可刪除或封存的列;清單照常捲動。

側滑即可刪除或封存的列;清單照常捲動。

繼承 Container

inbox.add_child(GoSwipeRow.wrap(mail_row, {"icon": GoIconSet.TRASH, "text": "Delete",
	"tone": GoTheme.DANGER, "action": delete_mail}))

GoTable

GoTable — 可排序的表頭與可選取的列;數字按數值排序。

可排序的表頭與可選取的列;數字按數值排序。

繼承 VBoxContainer

var board := GoTable.make(["Name", {"text": "Score", "numeric": true}], [["Ann", 9124], ["Ben", 91240]])
board.row_selected.connect(open_profile)

GoStyle.card · item_card

GoStyle.card · item_card — 卡片,以及所選物品的詳細卡。

卡片,以及所選物品的詳細卡。

所屬 GoStyle

var card := GoStyle.card()
card.add_child(GoStyle.label("Daily quest"))
popup.add_child(GoStyle.item_card({"title": "Rusty sword", "subtitle": "Common"}))

GoStyle.avatar

GoStyle.avatar — 圓形中的首字母或圖片。

圓形中的首字母或圖片。

所屬 GoStyle

row.add_child(GoStyle.avatar("AK", 40))

GoStyle.label

GoStyle.label — 使用從 micro 到 title 的七種文字角色之一的文字。

使用從 micro 到 title 的七種文字角色之一的文字。

所屬 GoStyle

page.add_child(GoStyle.label("Level 12", GoTheme.ROLE_TITLE))
page.add_child(GoStyle.label("Next level in 340 XP", GoTheme.ROLE_CAPTION, GoUi.color(GoTheme.MUTED)))

HUD 與遊戲元件 (30)

GoBar

GoBar — 顯示數值、分數或百分比的 HP、MP、XP 條。

顯示數值、分數或百分比的 HP、MP、XP 條。

繼承 Control

var hp := GoBar.new()
hp.label_text = "HP"
hp.set_values(320, 500)

GoSlot

GoSlot — 快捷欄格:圖示、數量、冷卻與快捷鍵集於一面。

快捷欄格:圖示、數量、冷卻與快捷鍵集於一面。

繼承 Button

var potion := GoSlot.new()
potion.icon_name = GoIconSet.POTION
potion.quantity = 12
potion.start_cooldown(5.0)

GoSlotGrid

GoSlotGrid — 背包網格;物品可在格子間拖動。

背包網格;物品可在格子間拖動。

繼承 HFlowContainer

var bag := GoSlotGrid.new()
bag.set_cell(0, {"icon": GoIconSet.POTION, "quantity": 12})

GoJoystick

GoJoystick — 虛擬搖桿——固定、跟隨拇指或相對模式。

虛擬搖桿——固定、跟隨拇指或相對模式。

繼承 Control

var pad := GoJoystick.new()
pad.mode = GoJoystick.Mode.FOLLOW
pad.moved.connect(func(direction: Vector2) -> void: player.move(direction))

GoKbd

GoKbd — 讀取真實按鍵綁定的鍵帽,改鍵後提示也不會出錯。

讀取真實按鍵綁定的鍵帽,改鍵後提示也不會出錯。

繼承 HBoxContainer

hint.add_child(GoKbd.for_action(&"interact"))

GoChoiceColumn

GoChoiceColumn — 點一下即可選的短直列——召喚清單;遊戲可標記任意多列。

點一下即可選的短直列——召喚清單;遊戲可標記任意多列。

繼承 Control

var animals := GoChoiceColumn.make(["Hen", "Cat", "Dog", "Pig", "Cow"], 4, summon)
animals.set_selected(2, true)
side_bar.add_center(animals)

GoLevelCard

關卡選擇卡片:縮圖、標題、副標題,並依狀態顯示勾號、鎖或 PLAY! 標籤。

繼承 Button

var card := GoLevelCard.make("STAGE 3", "OPPONENTS: 3", GoLevelCard.State.CURRENT)
card.pressed.connect(play_stage)

GoStarRow

一排評分星星:部分亮起金色,其餘變暗——關卡最佳通關或結算畫面的評級。

繼承 HBoxContainer

var rating := GoStarRow.make(2)
rating.star_size = 40.0

GoKeyCluster

倒 T 形排列的四個移動鍵(WASD 或方向鍵),就像操作說明頁那樣。

繼承 Control

var wasd := GoKeyCluster.make(["W", "A", "S", "D"])
var arrows := GoKeyCluster.make(GoKeyCluster.ARROWS)

GoCoverImage

填滿方框並裁掉多餘部分的圖片,類似 CSS 的 object-fit: cover。

繼承 Control

var shot := GoCoverImage.make(preload("res://art/level_3.png"), Vector2(0.5, 0.3))
shot.custom_minimum_size = Vector2(74, 74)

GoHudCard

比賽 HUD 頂列的一塊面板:圖示加橫幅和條、計數、時鐘或就緒量表。

繼承 PanelContainer

var clock := GoHudCard.make(GoUi.skin().widget_art(&"stopwatch"))
clock.title = "MATCH TIME"
clock.set_clock(83.0)

GoCountdown

比賽開始倒數:3、2、1、GO! 大字顯示在圓盤上,每一步彈出。

繼承 Label

var count := GoCountdown.new()
count.show_step("3")

GoHudButton

HUD 角落按鈕:圖片按鈕旁用鍵帽顯示對應的鍵盤按鍵。

繼承 HBoxContainer

var pause := GoHudButton.make(GoUi.skin().widget_art(&"pause_button"), 52.0, "Esc")
pause.pressed.connect(func() -> void: print("pause"))

GoNameplate

懸浮在 3D 世界角色上方的名牌,無論遠近在螢幕上大小不變。

繼承 PanelContainer

var plate := GoNameplate.make("BOT RED", Color(0.86, 0.24, 0.24))
plate.follow(camera, anchor.global_position)

GoNoticeFeed

單行通知(如擊殺播報)依序堆疊、淡入並自動消失的訊息流。

繼承 VBoxContainer

var feed := GoNoticeFeed.new()
feed.push("RED knocked out BLUE")
feed.push("YOU knocked out GREEN", true)

GoTouchButton

觸控螢幕用的圓形拇指按鈕,附冷卻圈、就緒脈衝與可選的拖曳瞄準。

繼承 Control

var jump := GoTouchButton.make(&"btn_jump", "JUMP", 86.0)
jump.pressed_down.connect(send_jump)
var skill := GoTouchButton.make(&"btn_repulse", "REPULSE", 92.0)
skill.cooling = true
skill.cooldown = 0.4

GoSpotlight

將某個控制項周圍的畫面調暗並加上外框;暗幕會淡出,外框保留。

繼承 Control

var spot := GoSpotlight.new()
hud.add_child(spot)
spot.follow(jump_button, true)

GoEditFrame

版面編輯器為玩家可移動的每個元素繪製的外框:一般、帶控點的選取、警告、隱藏。不接收輸入。

繼承 Control

var frame := GoEditFrame.new()
editor.add_child(frame)
frame.circle = true
frame.state = GoEditFrame.State.SELECTED

GoGestureHint

半透明的指尖循環示範一個觸控手勢——兩指張開再捏合,教玩家雙指縮放。不接收輸入。

繼承 Control

var hint := GoGestureHint.new()
hud.add_child(hint)
hint.position = Vector2(480, 0)
hint.size = Vector2(480, 540)
hint.play()

GoTaskCard

教學關卡卡片:步驟、標題、要做的事、完成即打勾的分項標籤與提示;可折疊成一列。

繼承 PanelContainer

var card := GoTaskCard.new()
card.caption = "TRAINING · STEP 1/12"
card.title = "MOVE"
card.body = "Move with W A S D."
card.set_parts(["W", "A", "S", "D"], [true])

GoPerfReadout

常駐效能條:fps、影格時間、三角形、繪製呼叫、節點與記憶體;fps 下降時變紅。

繼承 PanelContainer

var perf := GoPerfReadout.new()
perf.tier_text = "LOW (auto)"
overlay_layer.add_child(perf)

GoSignalBars

手機式訊號格:由左到右逐漸升高的直條,以綠、金、紅點亮,旁邊顯示「48 ms」之類的讀數——對局 HUD 的延遲。

繼承 PanelContainer

var ping := GoSignalBars.make(4, GoSignalBars.Tone.GOOD)
ping.set_reading(2, GoSignalBars.Tone.FAIR, "180 ms")

GoRewardRow

顯示玩家靠進度獲得之物的一列:帶進度條和獎勵的任務或成就,依狀態顯示領取按鈕、勾號或掛鎖。高度固定,適用於 GoListView。

繼承 PanelContainer

var quest := GoRewardRow.make("Win 3 matches", GoIconSet.STAR)
quest.key = "win_3"
quest.set_progress(1, 3)
quest.set_reward(50, GoIconSet.COIN)
quest.set_claim_text("CLAIM")
quest.set_state(GoRewardRow.State.READY)
quest.claim_pressed.connect(func(id: Variant) -> void: server.claim(id))

GoFoldTab

把 HUD 面板摺疊成小藥丸再展開:帶箭頭的細把手,摺疊後是保留圖示、短文字和量條的藥丸。宿主在 fold_changed 時重新排列 HUD。

繼承 Button

var tab := GoFoldTab.new()
tab.side = SIDE_LEFT
tab.icon_name = GoIconSet.USERS
tab.pill_text = "3"
tab.fold_changed.connect(func(now_folded: bool) -> void: party.visible = not now_folded)

GoMapPreview

關卡的小地圖:區域、連接和起點;鎖定時顯示為灰色剪影。

繼承 Control

var map := GoMapPreview.new()
map.add_rect(Vector2(0, 0), Vector2(6, 4), Color("#f2b84b"))
map.add_circle(Vector2(18, 0), 5.0, Color("#6fc3ff"))
map.add_link(Vector2(0, 0), Vector2(18, 0), 2.0, Color("#c9a26b"))
map.set_starts(PackedVector2Array([Vector2(-3, 0), Vector2(20, 0)]))

GoRewardCalendar

GoRewardCalendar — 每日簽到獎勵;只能點今天。

每日簽到獎勵;只能點今天。

繼承 VBoxContainer

var attendance := GoRewardCalendar.make(days, claimed_until)
attendance.claimed.connect(func(day: int) -> void: server.claim_day(day))

GoRadar

GoRadar — 屬性五邊形,以虛線比較裝備。

屬性五邊形,以虛線比較裝備。

繼承 Control

var stats := GoRadar.make({"STR": 0.85, "AGI": 0.5, "INT": 0.3, "VIT": 0.7, "LUK": 0.45})
stats.set_compare(with_new_sword)

GoDonut

GoDonut — 以扇形顯示占比,圖例不僅有顏色也有文字。

以扇形顯示占比,圖例不僅有顏色也有文字。

繼承 Control

var share := GoDonut.make([{"label": "Physical", "value": 620}, {"label": "Magic", "value": 340}])
card.add_child(share.legend())

GoZoomView

GoZoomView — 雙指、滾輪或點兩下縮放地圖;在邊界內平移。

雙指、滾輪或點兩下縮放地圖;在邊界內平移。

繼承 Control

var map := GoZoomView.wrap(world_map, 4.0)
map.custom_minimum_size.y = 320
page.add_child(map)

GoStyle.hud_panel · overlay_panel

GoStyle.hud_panel · overlay_panel — 浮在遊戲畫面上的面板,讓文字在任何畫面上都清晰可讀。

浮在遊戲畫面上的面板,讓文字在任何畫面上都清晰可讀。

所屬 GoStyle

var bars := GoStyle.hud_panel()
var pill := GoStyle.overlay_panel()

外觀與系統 (9)

GoUi · GoThemePresets

GoUi · GoThemePresets — 從預設(預設、科幻、中世紀、Material、兒童、漫畫、街機)中選擇一種;顏色與尺寸從 Token 讀取。

從預設(預設、科幻、中世紀、Material、兒童、漫畫、街機)中選擇一種;顏色與尺寸從 Token 讀取。

繼承 RefCounted

GoUi.use_preset(GoThemePresets.MATERIAL_LIGHT)
var accent := GoUi.color(GoTheme.ACCENT)
var gap := GoUi.metric(GoTheme.GAP)

GoConfig

一個資源裝下所有設定,外掛更新後仍保留。

繼承 Resource

GoUi.config.reduce_motion = true
GoUi.config.container_alpha = 1.0
GoUi.refresh()

GoSkin

GoSkin — 由程式繪製的形狀——標籤、槽位、搖桿與新元件——依你的風格。

由程式繪製的形狀——標籤、槽位、搖桿與新元件——依你的風格。

繼承 Resource

class_name MySkin
extends GoSkin

func banner_box() -> StyleBox:
	return surface_box(GoTheme.BOX_CARD)

GoIconSet · GoGameIcons

GoIconSet · GoGameIcons — 依名稱使用圖示:預設集、187 個遊戲圖示或你自己的 SVG。

依名稱使用圖示:預設集、187 個遊戲圖示或你自己的 SVG。

繼承 Resource · RefCounted

GoUi.config.icons = GoGameIcons.icon_set()
var gear := GoUi.icons().node(GoIconSet.SETTINGS, 24)

GoStyleBoxCut · GoStyleBoxBracket · GoStyleBoxMedieval

GoStyleBoxCut · GoStyleBoxBracket · GoStyleBoxMedieval — 供你的面板使用的切角、括號與鍛造外框。

供你的面板使用的切角、括號與鍛造外框。

繼承 StyleBox

var face := GoStyleBoxCut.new()
face.cut = 8
panel.add_theme_stylebox_override(&"panel", face)

GoStyleBoxSprite · GoTextureSprite

按九宮格繪製 PNG 的彩繪外框,以及用於滑桿把手或開關的圖示版本。

繼承 StyleBox

var plate := GoStyleBoxSprite.new()
plate.texture = preload("res://ui/painted/gloss_green.png")
plate.pixels_per_unit = 3.0
button.add_theme_stylebox_override(&"normal", plate)

GoSafeArea · GoScale

避開瀏海、手勢列與鍵盤的區域,以及以 dp 計的斷點。

繼承 Control · RefCounted

var usable := GoSafeArea.usable_rect(get_viewport())
var size_class := GoScale.breakpoint_for_dp(minf(usable.size.x, usable.size.y))   # by the short side

GoFeedback

把音效提示與觸覺回饋交給你自己的音訊;gohud 不附帶聲音。

繼承 RefCounted

GoFeedback.sound_handler = func(cue: String) -> void: audio.play_cue(cue)
GoFeedback.haptic_handler = func(ms: int, amplitude: float) -> void: Input.vibrate_handheld(ms, amplitude)

GoBackPolicy

目前由誰接管 Android 返回鍵與 Esc,在視窗之間共用。

繼承 RefCounted

GoBackPolicy.acquire(get_tree())