Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

ScrollContainer

Наследует: Container < Control < CanvasItem < Node < Object

Наследуется от: EditorInspector

Контейнер, используемый для предоставления полос прокрутки дочернему элементу управления при необходимости.

Описание

Контейнер, используемый для предоставления дочернему элементу управления полос прокрутки при необходимости. Полосы прокрутки будут автоматически отрисованы справа (для вертикали) или снизу (для горизонтали) и позволят перетаскивать видимый элемент управления (и его дочерние элементы) в пределах ScrollContainer. Полосы прокрутки также автоматически изменят размер захвата на основе Control.custom_minimum_size элемента управления относительно ScrollContainer.

Обучающие материалы

Свойства

bool

clip_contents

true (overrides Control)

bool

draw_focus_border

false

bool

follow_focus

false

ScrollMode

horizontal_scroll_mode

1

bool

propagate_maximum_size

false (overrides Control)

int

scroll_deadzone

0

ScrollHintMode

scroll_hint_mode

0

int

scroll_horizontal

0

bool

scroll_horizontal_by_default

false

float

scroll_horizontal_custom_step

-1.0

int

scroll_vertical

0

float

scroll_vertical_custom_step

-1.0

bool

tile_scroll_hint

false

ScrollMode

vertical_scroll_mode

1

Методы

void

ensure_control_visible(control: Control)

HScrollBar

get_h_scroll_bar()

VScrollBar

get_v_scroll_bar()

Свойства темы

Color

scroll_hint_horizontal_color

Color(0, 0, 0, 1)

Color

scroll_hint_vertical_color

Color(0, 0, 0, 1)

int

scrollbar_h_separation

0

int

scrollbar_v_separation

0

Texture2D

scroll_hint_horizontal

Texture2D

scroll_hint_vertical

StyleBox

focus

StyleBox

panel


Сигналы

scroll_ended() 🔗

Выдается, когда прокрутка останавливается при перетаскивании прокручиваемой области событием касания. Этот сигнал не выдается при прокрутке путем перетаскивания полосы прокрутки, прокрутки колесиком мыши или прокрутки с помощью событий клавиатуры/геймпада.

Примечание: Этот сигнал выдается только на Android или iOS, или на настольных/веб-платформах, когда включен ProjectSettings.input_devices/pointing/emulate_touch_from_mouse.


scroll_started() 🔗

Выдается при начале прокрутки при перетаскивании прокручиваемой области с событием касания. Этот сигнал не выдается при прокрутке путем перетаскивания полосы прокрутки, прокрутки колесиком мыши или прокрутки с помощью событий клавиатуры/геймпада.

Примечание: Этот сигнал выдается только на Android или iOS, или на настольных/веб-платформах, когда включен ProjectSettings.input_devices/pointing/emulate_touch_from_mouse.


Перечисления

enum ScrollMode: 🔗

ScrollMode SCROLL_MODE_DISABLED = 0

Прокрутка отключена, полоса прокрутки будет невидима.

ScrollMode SCROLL_MODE_AUTO = 1

Прокрутка включена, полоса прокрутки будет видна только при необходимости, т. е. если содержимое контейнера больше самого контейнера.

ScrollMode SCROLL_MODE_SHOW_ALWAYS = 2

Прокрутка включена, полоса прокрутки всегда будет видна.

ScrollMode SCROLL_MODE_SHOW_NEVER = 3

Прокрутка включена, полоса прокрутки будет скрыта.

ScrollMode SCROLL_MODE_RESERVE = 4

Объединяет SCROLL_MODE_AUTO и SCROLL_MODE_SHOW_ALWAYS. Полоса прокрутки видна только при необходимости, но размер контента регулируется так, как если бы он был виден всегда. Это полезно для обеспечения того, чтобы размер контента оставался неизменным независимо от того, видна ли полоса прокрутки.

ScrollMode SCROLL_MODE_MAXIMIZE_FIRST = 5

Behaves like SCROLL_MODE_AUTO, but makes the ScrollContainer report a minimum size based on its content (limited by Control.custom_maximum_size when set on the corresponding axis). This allows it to grow first and only start scrolling once constrained.


enum ScrollHintMode: 🔗

ScrollHintMode SCROLL_HINT_MODE_DISABLED = 0

Подсказки при прокрутке никогда не будут отображаться.

ScrollHintMode SCROLL_HINT_MODE_ALL = 1

Подсказки при прокрутке будут отображаться вверху и внизу (при вертикальной прокрутке) или слева и справа (при горизонтальной прокрутке).

ScrollHintMode SCROLL_HINT_MODE_TOP_AND_LEFT = 2

Подсказки при прокрутке будут отображаться вверху (если прокрутка вертикальная) или слева (если прокрутка горизонтальная).

ScrollHintMode SCROLL_HINT_MODE_BOTTOM_AND_RIGHT = 3

Подсказки при прокрутке будут отображаться внизу (если горизонтальная прокрутка) или справа (если горизонтальная прокрутка).


Описания свойств

bool draw_focus_border = false 🔗

  • void set_draw_focus_border(value: bool)

  • bool get_draw_focus_border()

Если true, focus отрисовывается, когда ScrollContainer или один из его дочерних узлов находится в фокусе.


bool follow_focus = false 🔗

  • void set_follow_focus(value: bool)

  • bool is_following_focus()

Если true, ScrollContainer автоматически прокрутит до сфокусированных дочерних элементов (включая косвенные дочерние элементы), чтобы убедиться, что они полностью видны.


ScrollMode horizontal_scroll_mode = 1 🔗

Управляет возможностью использования горизонтальной полосы прокрутки и тем, когда она должна быть видна.


int scroll_deadzone = 0 🔗

  • void set_deadzone(value: int)

  • int get_deadzone()

Мертвая зона для сенсорной прокрутки. Меньшая мертвая зона делает прокрутку более чувствительной.


ScrollHintMode scroll_hint_mode = 0 🔗

Будут отображаться подсказки о прокрутке (индикаторы, показывающие, что контент все еще можно прокручивать в определенном направлении).

Примечание: Подсказки не будут отображаться, если контент можно прокручивать как вертикально, так и горизонтально.


int scroll_horizontal = 0 🔗

  • void set_h_scroll(value: int)

  • int get_h_scroll()

Текущее значение горизонтальной прокрутки.

Примечание: Если вы устанавливаете это значение в функции Node._ready() или более ранней, его необходимо обернуть в Object.set_deferred(), поскольку Range.max_value полосы прокрутки еще не инициализирован.

func _ready():
    set_deferred("scroll_horizontal", 600)

bool scroll_horizontal_by_default = false 🔗

  • void set_scroll_horizontal_by_default(value: bool)

  • bool is_scroll_horizontal_by_default()

If true, the mouse wheel scrolls the view horizontally, and holding Shift scrolls vertically.

If false (default), the mouse wheel scrolls the view vertically, and holding Shift scrolls horizontally.


float scroll_horizontal_custom_step = -1.0 🔗

  • void set_horizontal_custom_step(value: float)

  • float get_horizontal_custom_step()

Переопределяет ScrollBar.custom_step, используемый при нажатии кнопок горизонтального увеличения и уменьшения внутренней полосы прокрутки или при использовании клавиш со стрелками, когда ScrollBar находится в фокусе.


int scroll_vertical = 0 🔗

  • void set_v_scroll(value: int)

  • int get_v_scroll()

Текущее значение вертикальной прокрутки.

Примечание: Раннюю установку необходимо отложить, как и в scroll_horizontal.

func _ready():
    set_deferred("scroll_vertical", 600)

float scroll_vertical_custom_step = -1.0 🔗

  • void set_vertical_custom_step(value: float)

  • float get_vertical_custom_step()

Переопределяет ScrollBar.custom_step, используемый при нажатии кнопок вертикального увеличения и уменьшения внутренней полосы прокрутки или при использовании клавиш со стрелками, когда ScrollBar находится в фокусе.


bool tile_scroll_hint = false 🔗

  • void set_tile_scroll_hint(value: bool)

  • bool is_scroll_hint_tiled()

Если true, текстура подсказки прокрутки будет мозаичной, а не растянутой. См. scroll_hint_mode.


ScrollMode vertical_scroll_mode = 1 🔗

Управляет возможностью использования вертикальной полосы прокрутки и тем, когда она должна быть видна.


Описания метода

void ensure_control_visible(control: Control) 🔗

Гарантирует, что заданный control виден (должен быть прямым или косвенным дочерним элементом ScrollContainer). Используется follow_focus.

Примечание: Это не будет работать на узле, который был только что добавлен в том же кадре. Если вы хотите прокрутить до недавно добавленного дочернего элемента, вы должны дождаться следующего кадра, используя SceneTree.process_frame:

add_child(child_node)
await get_tree().process_frame
ensure_control_visible(child_node)

HScrollBar get_h_scroll_bar() 🔗

Возвращает горизонтальную полосу прокрутки HScrollBar этого ScrollContainer.

Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите отключить или скрыть полосу прокрутки, вы можете использовать horizontal_scroll_mode.


VScrollBar get_v_scroll_bar() 🔗

Возвращает вертикальную полосу прокрутки VScrollBar этого ScrollContainer.

Предупреждение: Это обязательный внутренний узел, его удаление и освобождение может привести к сбою. Если вы хотите отключить или скрыть полосу прокрутки, вы можете использовать vertical_scroll_mode.


Описания свойств темы

Color scroll_hint_horizontal_color = Color(0, 0, 0, 1) 🔗

Color используется для модуляции текстуры scroll_hint_horizontal.


Color scroll_hint_vertical_color = Color(0, 0, 0, 1) 🔗

Color используется для модуляции текстуры scroll_hint_vertical.


int scrollbar_h_separation = 0 🔗

Расстояние между вертикальной полосой прокрутки ScrollContainer и его содержимым, в пикселях. Если минимальный размер содержимого превышает размер ScrollContainer, расстояние не добавляется.


int scrollbar_v_separation = 0 🔗

Расстояние между горизонтальной полосой прокрутки ScrollContainer и его содержимым, в пикселях. Если минимальный размер содержимого превышает размер ScrollContainer, расстояние не добавляется.


Texture2D scroll_hint_horizontal 🔗

Индикатор, который будет отображаться, когда контент еще можно прокручивать по горизонтали. См. scroll_hint_mode.


Texture2D scroll_hint_vertical 🔗

Индикатор, который будет отображаться, когда контент еще можно прокручивать вертикально. См. scroll_hint_mode.


StyleBox focus 🔗

Граница фокуса StyleBox ScrollContainer. Используется только если draw_focus_border равен true.


StyleBox panel 🔗

Фон StyleBox ScrollContainer.