gohud

Скины — там, куда Theme не дотягивается

← Темы

МетодРешает
surface_box · floating_box · overlay_boxЛицевые части карточек и панелей, плавающие поверхности, плашки поверх игры или карты
chip_box · chip_inkПанель чипа и цвет подписи, который остаётся на ней читаемым
slot_box · slot_inkЛицевые панели быстрых слотов и их текст
disc_boxКруг за аватаром или значком
alert_box · skeleton_box · segment_boxВстроенные оповещения, заполнители, сегментированные переключатели
coach_ring_boxМетка, которую обучающий тур ставит вокруг своей цели
draw_joystick · draw_coach_pointerТо, что рисуется напрямую, — стик и его указатель
divider_color · divider_thickness · section_boxРазделители и заголовки секций
badge_boxЗначки быстрых слотов — количество и оставшееся время
progress_fill_box · notice_box · tint_noticeЗаливки полос (с обводкой там, где заливка не добирает 3:1 к своему жёлобу) и снекбары
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:
    # Виджет уже вычислил позиции — здесь происходит только рисование
    canvas.draw_circle(center, radius, Color(base, 0.4))
    canvas.draw_circle(knob, knob_radius, ink)

Формы, которые StyleBoxFlat не умеет

КлассЧто рисует
GoStyleBoxCutДиагонально срезанные углы, одну утолщённую акцентную грань, внешнее свечение
GoStyleBoxBracketТолько угловые метки, оставляя содержимое незамкнутым
GoStyleBoxMedievalКованую рамку — заклёпки, угловую гравировку, фасочный блик и фактуру железа, кожи или пергамента

Все три сериализуются в ресурс Theme, как любой другой StyleBox, — именно это и позволяет теме менять форму.

Задавайте внутренние отступы через content_margin_*. При наследовании StyleBox в GDScript _get_style_margin() не вызывается никогда (проверено на Godot 4.7). Заполняйте встроенные поля, иначе содержимое прижмётся к рамке.