gohud

모든 위젯

gohud 의 모든 위젯과 레이아웃을 이름과 붙여 넣을 수 있는 예제로 모았다. 모두 지금 고른 프리셋의 모양을 따른다. ← 위젯

레이아웃 (15)

GoScaffold

GoScaffold — 앱 화면을 한 번에 엮는다 — 바, 스크롤 페이지, 아래 바, FAB, 서랍.

앱 화면을 한 번에 엮는다 — 바, 스크롤 페이지, 아래 바, 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 — 칸으로 보이는 쿠폰·선물 코드 — 붙여 넣기와 IME 입력이 그대로 된다.

칸으로 보이는 쿠폰·선물 코드 — 붙여 넣기와 IME 입력이 그대로 된다.

바탕 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 — 마이크로부터 제목까지 일곱 가지 글자 역할 중 하나로.

마이크로부터 제목까지 일곱 가지 글자 역할 중 하나로.

소속 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 — 프리셋(기본·SF·중세·Material·어린이·코믹·아케이드) 중 하나를 고르고, 색과 크기는 토큰에서 읽는다.

프리셋(기본·SF·중세·Material·어린이·코믹·아케이드) 중 하나를 고르고, 색과 크기는 토큰에서 읽는다.

바탕 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 를 9슬라이스로 그리는 페인티드 박스와, 슬라이더 손잡이·스위치용 아이콘 짝.

바탕 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

지금 안드로이드 뒤로·Esc 를 누가 갖는지 — 창들 사이에 나눠 쓴다.

바탕 RefCounted

GoBackPolicy.acquire(get_tree())