| Method | Decides |
|---|---|
surface_box · floating_box · overlay_box | Card and panel faces, floating surfaces, pills laid over the game or a map |
chip_box · chip_ink | A chip's panel and the label colour that stays legible on it |
slot_box · slot_ink | Quick-slot faces and their text |
disc_box | The circle behind an avatar or badge |
alert_box · skeleton_box · segment_box | Inline alerts, placeholders, segmented controls |
coach_ring_box | The mark a coach tour puts around its target |
draw_joystick · draw_coach_pointer | Things drawn directly — the joystick and its pointer |
divider_color · divider_thickness · section_box | Dividers and section headings |
badge_box | Quick-slot badges — quantity and time left |
progress_fill_box · notice_box · tint_notice | Bar fills (outlined where a fill cannot reach 3:1 on its track) and snackbars |
class_name MySkin extends GoSkin
func draw_joystick(canvas: CanvasItem, center: Vector2, knob: Vector2,
radius: float, knob_radius: float, ink: Color, base: Color, active: bool) -> void:
# The widget has already worked out the positions — only drawing happens here
canvas.draw_circle(center, radius, Color(base, 0.4))
canvas.draw_circle(knob, knob_radius, ink)
Shapes StyleBoxFlat cannot make
| Class | What it draws |
|---|---|
GoStyleBoxCut | Diagonally cut corners, one thickened accent edge, an outer glow |
GoStyleBoxBracket | Corner marks only, leaving the content unenclosed |
GoStyleBoxMedieval | A forged frame — rivets, corner engraving, a bevel highlight and iron, leather or parchment grain |
All three serialise into a Theme resource like any other StyleBox — which is what lets a theme change shape.
Give padding through
content_margin_*. Subclassing StyleBox in GDScript means
_get_style_margin() is never called (measured on Godot 4.7). Fill the built-in fields or
content will sit against the border.