Control

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

Наследуется от: BaseButton, ColorRect, Container, GraphEdit, ItemList, Label, LineEdit, MenuBar, NinePatchRect, Panel, Range, ReferenceRect, RichTextLabel, Separator, TabBar, TextEdit, TextureRect, Tree, VideoStreamPlayer

Базовый класс для всех элементов управления GUI. Адаптирует свое положение и размер на основе родительского элемента управления.

Описание

Базовый класс для всех узлов, связанных с пользовательским интерфейсом. Control имеет ограничивающий прямоугольник, определяющий его границы, положение привязки относительно родительского элемента управления или текущей области просмотра, а также смещения относительно привязки. Смещения автоматически обновляются при изменении узла, любого из его родителей или размера экрана.

Для получения дополнительной информации о системе пользовательского интерфейса Godot, привязках, смещениях и контейнерах см. соответствующие руководства. Для создания гибких пользовательских интерфейсов вам потребуется сочетание элементов пользовательского интерфейса, наследующих от узлов Control и Container.

Примечание: Поскольку Node2D и Control наследуют от CanvasItem, они разделяют несколько концепций класса, таких как свойства CanvasItem.z_index и CanvasItem.visible.

Узлы пользовательского интерфейса и ввод

Godot распространяет события ввода через области просмотра. Каждый Viewport отвечает за передачу InputEvent своим дочерним узлам. Поскольку SceneTree.root является Window, это уже происходит автоматически для всех элементов пользовательского интерфейса в вашей игре.

Входные события передаются через SceneTree от корневого узла ко всем дочерним узлам путем вызова Node._input(). Для элементов пользовательского интерфейса целесообразнее переопределить виртуальный метод _gui_input(), который фильтрует несвязанные входные события, например, проверяя z-порядок, mouse_filter, фокус или нахождение события внутри ограничивающего прямоугольника элемента управления.

Вызовите accept_event(), чтобы ни один другой узел не получил событие. После принятия входного сигнала он становится обработанным, поэтому Node._unhandled_input() его обрабатывать не будет.

В фокусе может находиться только один узел Control. Только узел в фокусе будет получать события. Чтобы получить фокус, вызовите grab_focus(). Узлы Control теряют фокус, когда другой узел захватывает его, или если вы скрываете узел, находящийся в фокусе. Фокус не будет отображаться визуально, если он получен с помощью мыши/сенсорного ввода, он будет отображаться только при вводе с клавиатуры/геймпада (для доступности) или с помощью grab_focus().

Установите mouse_filter в MOUSE_FILTER_IGNORE, чтобы указать узлу Control игнорировать события мыши или сенсорного ввода. Это понадобится, если вы разместите значок поверх кнопки.

Ресурсы Theme изменяют внешний вид элемента управления. theme узла Control влияет на всех его прямых и косвенных дочерних элементов (пока цепочка элементов управления не прерывается). Чтобы переопределить некоторые элементы темы, вызовите один из методов add_theme_*_override, например add_theme_font_override(). Вы также можете переопределить элементы темы в инспекторе.

Примечание: Элементы темы не являются свойствами Object. Это означает, что вы не можете получить доступ к их значениям с помощью методов Object.get() и Object.set(). Вместо этого используйте методы get_theme_* и add_theme_*_override, предоставляемые этим классом.

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

Свойства

Array[NodePath]

accessibility_controls_nodes

[]

Array[NodePath]

accessibility_described_by_nodes

[]

String

accessibility_description

""

Array[NodePath]

accessibility_flow_to_nodes

[]

Array[NodePath]

accessibility_labeled_by_nodes

[]

AccessibilityLiveMode

accessibility_live

0

String

accessibility_name

""

float

anchor_bottom

0.0

float

anchor_left

0.0

float

anchor_right

0.0

float

anchor_top

0.0

bool

auto_translate

bool

clip_contents

false

Vector2

custom_minimum_size

Vector2(0, 0)

FocusBehaviorRecursive

focus_behavior_recursive

0

FocusMode

focus_mode

0

NodePath

focus_neighbor_bottom

NodePath("")

NodePath

focus_neighbor_left

NodePath("")

NodePath

focus_neighbor_right

NodePath("")

NodePath

focus_neighbor_top

NodePath("")

NodePath

focus_next

NodePath("")

NodePath

focus_previous

NodePath("")

Vector2

global_position

GrowDirection

grow_horizontal

1

GrowDirection

grow_vertical

1

LayoutDirection

layout_direction

0

bool

localize_numeral_system

true

MouseBehaviorRecursive

mouse_behavior_recursive

0

CursorShape

mouse_default_cursor_shape

0

MouseFilter

mouse_filter

0

bool

mouse_force_pass_scroll_events

true

float

offset_bottom

0.0

float

offset_left

0.0

float

offset_right

0.0

float

offset_top

0.0

PhysicsInterpolationMode

physics_interpolation_mode

2 (overrides Node)

Vector2

pivot_offset

Vector2(0, 0)

Vector2

pivot_offset_ratio

Vector2(0, 0)

Vector2

position

Vector2(0, 0)

float

rotation

0.0

float

rotation_degrees

Vector2

scale

Vector2(1, 1)

Node

shortcut_context

Vector2

size

Vector2(0, 0)

BitField[SizeFlags]

size_flags_horizontal

1

float

size_flags_stretch_ratio

1.0

BitField[SizeFlags]

size_flags_vertical

1

Theme

theme

StringName

theme_type_variation

&""

AutoTranslateMode

tooltip_auto_translate_mode

0

String

tooltip_text

""

Методы

String

_accessibility_get_contextual_info() virtual const

bool

_can_drop_data(at_position: Vector2, data: Variant) virtual const

void

_drop_data(at_position: Vector2, data: Variant) virtual

String

_get_accessibility_container_name(node: Node) virtual const

Variant

_get_drag_data(at_position: Vector2) virtual

Vector2

_get_minimum_size() virtual const

String

_get_tooltip(at_position: Vector2) virtual const

void

_gui_input(event: InputEvent) virtual

bool

_has_point(point: Vector2) virtual const

Object

_make_custom_tooltip(for_text: String) virtual const

Array[Vector3i]

_structured_text_parser(args: Array, text: String) virtual const

void

accept_event()

void

accessibility_drag()

void

accessibility_drop()

void

add_theme_color_override(name: StringName, color: Color)

void

add_theme_constant_override(name: StringName, constant: int)

void

add_theme_font_override(name: StringName, font: Font)

void

add_theme_font_size_override(name: StringName, font_size: int)

void

add_theme_icon_override(name: StringName, texture: Texture2D)

void

add_theme_stylebox_override(name: StringName, stylebox: StyleBox)

void

begin_bulk_theme_override()

void

end_bulk_theme_override()

Control

find_next_valid_focus() const

Control

find_prev_valid_focus() const

Control

find_valid_focus_neighbor(side: Side) const

void

force_drag(data: Variant, preview: Control)

float

get_anchor(side: Side) const

Vector2

get_begin() const

Vector2

get_combined_minimum_size() const

Vector2

get_combined_pivot_offset() const

CursorShape

get_cursor_shape(position: Vector2 = Vector2(0, 0)) const

Vector2

get_end() const

FocusMode

get_focus_mode_with_override() const

NodePath

get_focus_neighbor(side: Side) const

Rect2

get_global_rect() const

Vector2

get_minimum_size() const

MouseFilter

get_mouse_filter_with_override() const

float

get_offset(offset: Side) const

Vector2

get_parent_area_size() const

Control

get_parent_control() const

Rect2

get_rect() const

Vector2

get_screen_position() const

Color

get_theme_color(name: StringName, theme_type: StringName = &"") const

int

get_theme_constant(name: StringName, theme_type: StringName = &"") const

float

get_theme_default_base_scale() const

Font

get_theme_default_font() const

int

get_theme_default_font_size() const

Font

get_theme_font(name: StringName, theme_type: StringName = &"") const

int

get_theme_font_size(name: StringName, theme_type: StringName = &"") const

Texture2D

get_theme_icon(name: StringName, theme_type: StringName = &"") const

StyleBox

get_theme_stylebox(name: StringName, theme_type: StringName = &"") const

String

get_tooltip(at_position: Vector2 = Vector2(0, 0)) const

void

grab_click_focus()

void

grab_focus(hide_focus: bool = false)

bool

has_focus(ignore_hidden_focus: bool = false) const

bool

has_theme_color(name: StringName, theme_type: StringName = &"") const

bool

has_theme_color_override(name: StringName) const

bool

has_theme_constant(name: StringName, theme_type: StringName = &"") const

bool

has_theme_constant_override(name: StringName) const

bool

has_theme_font(name: StringName, theme_type: StringName = &"") const

bool

has_theme_font_override(name: StringName) const

bool

has_theme_font_size(name: StringName, theme_type: StringName = &"") const

bool

has_theme_font_size_override(name: StringName) const

bool

has_theme_icon(name: StringName, theme_type: StringName = &"") const

bool

has_theme_icon_override(name: StringName) const

bool

has_theme_stylebox(name: StringName, theme_type: StringName = &"") const

bool

has_theme_stylebox_override(name: StringName) const

bool

is_drag_successful() const

bool

is_layout_rtl() const

void

release_focus()

void

remove_theme_color_override(name: StringName)

void

remove_theme_constant_override(name: StringName)

void

remove_theme_font_override(name: StringName)

void

remove_theme_font_size_override(name: StringName)

void

remove_theme_icon_override(name: StringName)

void

remove_theme_stylebox_override(name: StringName)

void

reset_size()

void

set_anchor(side: Side, anchor: float, keep_offset: bool = false, push_opposite_anchor: bool = true)

void

set_anchor_and_offset(side: Side, anchor: float, offset: float, push_opposite_anchor: bool = false)

void

set_anchors_and_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0)

void

set_anchors_preset(preset: LayoutPreset, keep_offsets: bool = false)

void

set_begin(position: Vector2)

void

set_drag_forwarding(drag_func: Callable, can_drop_func: Callable, drop_func: Callable)

void

set_drag_preview(control: Control)

void

set_end(position: Vector2)

void

set_focus_neighbor(side: Side, neighbor: NodePath)

void

set_global_position(position: Vector2, keep_offsets: bool = false)

void

set_offset(side: Side, offset: float)

void

set_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0)

void

set_position(position: Vector2, keep_offsets: bool = false)

void

set_size(size: Vector2, keep_offsets: bool = false)

void

update_minimum_size()

void

warp_mouse(position: Vector2)


Сигналы

focus_entered() 🔗

Вызывается, когда узел получает фокус.


focus_exited() 🔗

Выдается, когда узел теряет фокус.


gui_input(event: InputEvent) 🔗

Вызывается, когда узел получает InputEvent.


minimum_size_changed() 🔗

Вызывается при изменении минимального размера узла.


mouse_entered() 🔗

Вызывается, когда курсор мыши попадает в видимую область элемента управления (или любого дочернего элемента управления), которая не перекрыта другими элементами управления или окнами, при условии, что его mouse_filter позволяет событию достичь его, и независимо от того, находится ли он в фокусе в данный момент или нет.

Примечание: CanvasItem.z_index не влияет на то, какой элемент управления получает сигнал.


mouse_exited() 🔗

Вызывается, когда курсор мыши покидает видимую область элемента управления (и всех дочерних элементов управления), которая не перекрыта другими элементами управления или окнами, при условии, что его mouse_filter позволяет событию достичь его, и независимо от того, находится ли он в фокусе в данный момент или нет.

Примечание: CanvasItem.z_index не влияет на то, какой элемент управления получает сигнал.

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

func _on_mouse_exited():
    if not Rect2(Vector2(), size).has_point(get_local_mouse_position()):
        # Не зависает над областью.

resized() 🔗

Вызывается при изменении размера элемента управления.


size_flags_changed() 🔗

Выдается при изменении одного из флагов размера. См. size_flags_horizontal и size_flags_vertical.


theme_changed() 🔗

Вызывается при отправке уведомления NOTIFICATION_THEME_CHANGED.


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

enum FocusMode: 🔗

FocusMode FOCUS_NONE = 0

Узел не может захватить фокус. Используйте с focus_mode.

FocusMode FOCUS_CLICK = 1

Узел может захватывать фокус только по щелчкам мыши. Используйте с focus_mode.

FocusMode FOCUS_ALL = 2

Узел может захватывать фокус по щелчку мыши, используя стрелки и клавиши Tab на клавиатуре или кнопки D-pad на геймпаде. Используйте с focus_mode.

FocusMode FOCUS_ACCESSIBILITY = 3

Узел может захватить фокус только когда активен экранный диктор. Используйте с focus_mode.


enum FocusBehaviorRecursive: 🔗

FocusBehaviorRecursive FOCUS_BEHAVIOR_INHERITED = 0

Наследует focus_behavior_recursive от родительского элемента управления. Если родительского элемента управления нет, это то же самое, что и FOCUS_BEHAVIOR_ENABLED.

FocusBehaviorRecursive FOCUS_BEHAVIOR_DISABLED = 1

Предотвращает фокусировку элемента управления. get_focus_mode_with_override() вернет FOCUS_NONE.

FocusBehaviorRecursive FOCUS_BEHAVIOR_ENABLED = 2

Позволяет фокусировать элемент управления в зависимости от focus_mode. Это можно использовать для игнорирования focus_behavior_recursive родительского элемента. get_focus_mode_with_override() вернет focus_mode.


enum MouseBehaviorRecursive: 🔗

MouseBehaviorRecursive MOUSE_BEHAVIOR_INHERITED = 0

Наследует mouse_behavior_recursive от родительского элемента управления. Если родительского элемента управления нет, это то же самое, что и MOUSE_BEHAVIOR_ENABLED.

MouseBehaviorRecursive MOUSE_BEHAVIOR_DISABLED = 1

Запрещает элементу управления получать ввод с мыши. get_mouse_filter_with_override() вернет MOUSE_FILTER_IGNORE.

MouseBehaviorRecursive MOUSE_BEHAVIOR_ENABLED = 2

Позволяет элементу управления получать ввод с мыши в зависимости от mouse_filter. Это можно использовать для игнорирования mouse_behavior_recursive родительского элемента. get_mouse_filter_with_override() вернет mouse_filter.


enum CursorShape: 🔗

CursorShape CURSOR_ARROW = 0

Показывать системный курсор мыши в виде стрелки, когда пользователь наводит курсор на узел. Использовать с mouse_default_cursor_shape.

CursorShape CURSOR_IBEAM = 1

Показывать системный I-образный курсор мыши, когда пользователь наводит курсор на узел. I-образный указатель имеет форму, похожую на "I". Он сообщает пользователю, что он может выделить или вставить текст.

CursorShape CURSOR_POINTING_HAND = 2

Показывать курсор мыши в виде указывающей руки системы, когда пользователь наводит курсор на узел.

CursorShape CURSOR_CROSS = 3

Показывать системный курсор мыши в виде крестика, когда пользователь наводит курсор на узел.

CursorShape CURSOR_WAIT = 4

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

CursorShape CURSOR_BUSY = 5

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

CursorShape CURSOR_DRAG = 6

Показывать системный курсор мыши для перетаскивания, часто сжатый кулак или символ креста, когда пользователь наводит курсор на узел. Он сообщает пользователю, что в данный момент он перетаскивает элемент, например узел в доке сцены.

CursorShape CURSOR_CAN_DROP = 7

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

CursorShape CURSOR_FORBIDDEN = 8

Показывать запрещенный системой курсор мыши, когда пользователь наводит его на узел. Часто перечеркнутый круг.

CursorShape CURSOR_VSIZE = 9

Показывать вертикальный курсор мыши системы изменения размера, когда пользователь наводит его на узел. Двунаправленная вертикальная стрелка. Она сообщает пользователю, что он может изменять размер окна или панели по вертикали.

CursorShape CURSOR_HSIZE = 10

Показывать горизонтальный курсор мыши системы изменения размера, когда пользователь наводит его на узел. Двунаправленная горизонтальная стрелка. Она сообщает пользователю, что он может изменять размер окна или панели по горизонтали.

CursorShape CURSOR_BDIAGSIZE = 11

Показывать курсор мыши для изменения размера окна системы, когда пользователь наводит его на узел. Курсор — это двунаправленная стрелка, которая идет из нижнего левого угла в верхний правый угол. Он сообщает пользователю, что он может изменять размер окна или панели как по горизонтали, так и по вертикали.

CursorShape CURSOR_FDIAGSIZE = 12

Показывать курсор мыши для изменения размера окна системы, когда пользователь наводит его на узел. Курсор — это двунаправленная стрелка, которая идет из верхнего левого угла в нижний правый угол, противоположность CURSOR_BDIAGSIZE. Он сообщает пользователю, что он может изменять размер окна или панели как по горизонтали, так и по вертикали.

CursorShape CURSOR_MOVE = 13

Показывать курсор мыши перемещения системы, когда пользователь наводит его на узел. Он показывает 2 двунаправленные стрелки под углом 90 градусов. Он сообщает пользователю, что он может свободно перемещать элемент пользовательского интерфейса.

CursorShape CURSOR_VSPLIT = 14

Показывать вертикальный разделенный курсор мыши системы, когда пользователь наводит курсор на узел. В Windows это то же самое, что и CURSOR_VSIZE.

CursorShape CURSOR_HSPLIT = 15

Показывать горизонтальный разделенный курсор мыши системы, когда пользователь наводит курсор на узел. В Windows это то же самое, что и CURSOR_HSIZE.

CursorShape CURSOR_HELP = 16

Показывать системную справку: курсор мыши при наведении на узел - вопросительный знак.


enum LayoutPreset: 🔗

LayoutPreset PRESET_TOP_LEFT = 0

Прикрепить все 4 якоря к верхнему левому углу границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_TOP_RIGHT = 1

Прикрепить все 4 якоря к правому верхнему краю границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_BOTTOM_LEFT = 2

Прикрепить все 4 якоря к нижнему левому углу границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_BOTTOM_RIGHT = 3

Прикрепить все 4 якоря к нижнему правому краю границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_CENTER_LEFT = 4

Привязать все 4 якоря к центру левого края границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_CENTER_TOP = 5

Привяжите все 4 якоря к центру верхнего края границ родительского элемента управления. Используйте с set_anchors_preset().

LayoutPreset PRESET_CENTER_RIGHT = 6

Привязать все 4 якоря к центру правого края границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_CENTER_BOTTOM = 7

Привяжите все 4 якоря к центру нижнего края границ родительского элемента управления. Используйте с set_anchors_preset().

LayoutPreset PRESET_CENTER = 8

Привязать все 4 якоря к центру границ родительского элемента управления. Использовать с set_anchors_preset().

LayoutPreset PRESET_LEFT_WIDE = 9

Привязать все 4 якоря к левому краю родительского элемента управления. Левое смещение становится относительным к левому краю, а верхнее смещение — относительно верхнего левого угла родительского узла. Использовать с set_anchors_preset().

LayoutPreset PRESET_TOP_WIDE = 10

Привязать все 4 якоря к верхнему краю родительского элемента управления. Левое смещение становится относительно верхнего левого угла, верхнее смещение относительно верхнего края, а правое смещение относительно верхнего правого угла родительского узла. Использовать с set_anchors_preset().

LayoutPreset PRESET_RIGHT_WIDE = 11

Привязать все 4 якоря к правому краю родительского элемента управления. Правое смещение становится относительным к правому краю, а верхнее смещение — относительно верхнего правого угла родителя узла. Использовать с set_anchors_preset().

LayoutPreset PRESET_BOTTOM_WIDE = 12

Привязать все 4 якоря к нижнему краю родительского элемента управления. Левое смещение становится относительно нижнего левого угла, нижнее смещение относительно нижнего края, а правое смещение относительно нижнего правого угла родительского узла. Использовать с set_anchors_preset().

LayoutPreset PRESET_VCENTER_WIDE = 13

Привяжите все 4 якоря к вертикальной линии, которая разрезает родительский элемент управления пополам. Используйте с set_anchors_preset().

LayoutPreset PRESET_HCENTER_WIDE = 14

Привяжите все 4 якоря к горизонтальной линии, которая разрезает родительский элемент управления пополам. Используйте с set_anchors_preset().

LayoutPreset PRESET_FULL_RECT = 15

Привяжите все 4 якоря к соответствующим углам родительского элемента управления. Установите все 4 смещения на 0 после применения этого пресета, и Control будет соответствовать своему родительскому элементу управления. Используйте с set_anchors_preset().


enum LayoutPresetMode: 🔗

LayoutPresetMode PRESET_MODE_MINSIZE = 0

Размер элемента управления будет изменен до минимального.

LayoutPresetMode PRESET_MODE_KEEP_WIDTH = 1

Ширина элемента управления не изменится.

LayoutPresetMode PRESET_MODE_KEEP_HEIGHT = 2

Высота элемента управления не изменится.

LayoutPresetMode PRESET_MODE_KEEP_SIZE = 3

Размер элемента управления не изменится.


flags SizeFlags: 🔗

SizeFlags SIZE_SHRINK_BEGIN = 0

Сообщает родительскому Container о необходимости выровнять узел по его началу, либо по верхнему, либо по левому краю. Это взаимоисключающе с SIZE_FILL и другими флагами размера сжатия, но может использоваться с SIZE_EXPAND в некоторых контейнерах. Используйте с size_flags_horizontal и size_flags_vertical.

Примечание: Установка этого флага эквивалентна отсутствию флагов размера.

SizeFlags SIZE_FILL = 1

Сообщает родительскому Container расширить границы этого узла, чтобы заполнить все доступное пространство, не выталкивая другие узлы. Это взаимоисключающе с флагами размера сжатия. Используйте с size_flags_horizontal и size_flags_vertical.

SizeFlags SIZE_EXPAND = 2

Сообщает родительскому Container разрешить этому узлу занять все доступное пространство на помеченной вами оси. Если несколько соседних узлов настроены на расширение, они будут делить пространство на основе их коэффициента растяжения. См. size_flags_stretch_ratio. Используйте с size_flags_horizontal и size_flags_vertical.

SizeFlags SIZE_EXPAND_FILL = 3

Устанавливает флаги размера узла для заполнения и расширения. См. SIZE_FILL и SIZE_EXPAND для получения дополнительной информации.

SizeFlags SIZE_SHRINK_CENTER = 4

Сообщает родительскому Container центрировать узел в доступном пространстве. Является взаимоисключающим с SIZE_FILL и другими флагами размера сжатия, но может использоваться с SIZE_EXPAND в некоторых контейнерах. Используйте с size_flags_horizontal и size_flags_vertical.

SizeFlags SIZE_SHRINK_END = 8

Сообщает родительскому Container о необходимости выровнять узел по его концу, либо по нижнему, либо по правому краю. Является взаимоисключающим с SIZE_FILL и другими флагами размера сжатия, но может использоваться с SIZE_EXPAND в некоторых контейнерах. Используйте с size_flags_horizontal и size_flags_vertical.


enum MouseFilter: 🔗

MouseFilter MOUSE_FILTER_STOP = 0

Элемент управления будет получать события ввода движения мыши и события ввода кнопки мыши, если щелкнуть по нему через _gui_input(). Элемент управления также будет получать сигналы mouse_entered и mouse_exited. Эти события автоматически помечаются как обработанные и не будут распространяться дальше на другие элементы управления. Это также приводит к блокировке сигналов в других элементах управления.

MouseFilter MOUSE_FILTER_PASS = 1

Элемент управления будет получать события ввода движения мыши и события ввода кнопки мыши, если на него нажато через _gui_input(). Элемент управления также получит сигналы mouse_entered и mouse_exited.

Если этот элемент управления не обрабатывает событие, событие будет распространяться вверх к его родительскому элементу управления, если он есть. Событие всплывает вверх по иерархии узлов, пока не достигнет не-CanvasItem, элемента управления с MOUSE_FILTER_STOP или CanvasItem с включенным CanvasItem.top_level. Это позволит сигналам срабатывать во всех элементах управления, которых он достигает. Если ни один элемент управления не обработал его, событие будет передано в Node._shortcut_input() для дальнейшей обработки.

MouseFilter MOUSE_FILTER_IGNORE = 2

Элемент управления не будет получать никаких событий ввода движения мыши или событий ввода кнопки мыши через _gui_input(). Элемент управления также не будет получать сигналы mouse_entered или mouse_exited. Это не помешает другим элементам управления получать эти события или подавать сигналы. Проигнорированные события не будут обрабатываться автоматически. Если у дочернего элемента есть MOUSE_FILTER_PASS и этому элементу управления было передано событие, событие будет далее распространяться до родительского элемента управления.

Примечание: Если элемент управления получил mouse_entered, но не mouse_exited, изменение mouse_filter на MOUSE_FILTER_IGNORE приведет к испусканию mouse_exited.


enum GrowDirection: 🔗

GrowDirection GROW_DIRECTION_BEGIN = 0

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

GrowDirection GROW_DIRECTION_END = 1

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

GrowDirection GROW_DIRECTION_BOTH = 2

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


enum Anchor: 🔗

Anchor ANCHOR_BEGIN = 0

Привязывает одну из 4 сторон якоря к началу координат Rect узла в левом верхнем углу. Используйте его с одной из переменных-членов anchor_*, например anchor_left. Чтобы изменить все 4 якоря одновременно, используйте set_anchors_preset().

Anchor ANCHOR_END = 1

Привязывает одну из 4 сторон якоря к концу Rect узла в правом нижнем углу. Используйте его с одной из переменных-членов anchor_*, например anchor_left. Чтобы изменить все 4 якоря одновременно, используйте set_anchors_preset().


enum LayoutDirection: 🔗

LayoutDirection LAYOUT_DIRECTION_INHERITED = 0

Автоматическое направление макета, определяемое на основе направления макета родительского элемента управления.

LayoutDirection LAYOUT_DIRECTION_APPLICATION_LOCALE = 1

Автоматическое направление макета, определяемое текущей локалью. Направление макета справа налево автоматически используется для языков, которым оно требуется, таких как арабский и иврит, но только если загружен допустимый файл перевода для данного языка (если только указанный язык не настроен как резервный в ProjectSettings.internationalization/locale/fallback). Для всех других языков (или если Godot не нашел допустимый файл перевода) используется направление макета слева направо. При использовании TextServerFallback (ProjectSettings.internationalization/rendering/text_driver) всегда используется направление макета слева направо независимо от языка. Направление макета справа налево также можно принудительно установить с помощью ProjectSettings.internationalization/rendering/force_right_to_left_layout_direction.

LayoutDirection LAYOUT_DIRECTION_LTR = 2

Направление макета слева направо.

LayoutDirection LAYOUT_DIRECTION_RTL = 3

Направление раскладки справа налево.

LayoutDirection LAYOUT_DIRECTION_SYSTEM_LOCALE = 4

Автоматическое направление макета, определяемое системными настройками. Направление макета справа налево автоматически используется для языков, для которых оно требуется, например, для арабского и иврита, но только если загружен корректный файл перевода для данного языка. Для всех остальных языков (или если Godot не нашёл корректный файл перевода) используется направление макета слева направо. При использовании TextServerFallback (ProjectSettings.internationalization/rendering/text_driver) направление макета слева направо используется всегда, независимо от языка.

LayoutDirection LAYOUT_DIRECTION_MAX = 5

Представляет размер перечисления LayoutDirection.

LayoutDirection LAYOUT_DIRECTION_LOCALE = 1

Устарело: Use LAYOUT_DIRECTION_APPLICATION_LOCALE instead.


enum TextDirection: 🔗

TextDirection TEXT_DIRECTION_INHERITED = 3

Направление написания текста совпадает с направлением макета.

TextDirection TEXT_DIRECTION_AUTO = 0

Автоматическое направление написания текста, определяемое на основе текущей локали и содержимого текста.

TextDirection TEXT_DIRECTION_LTR = 1

Направление написания текста слева направо.

TextDirection TEXT_DIRECTION_RTL = 2

Направление текста справа налево.


Константы

NOTIFICATION_RESIZED = 40 🔗

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

NOTIFICATION_MOUSE_ENTER = 41 🔗

Отправляется, когда курсор мыши попадает в видимую область элемента управления (или любого дочернего элемента управления), которая не перекрыта другими элементами управления или окнами, при условии, что его mouse_filter позволяет событию достичь его, и независимо от того, находится ли он в фокусе в данный момент или нет.

Примечание: CanvasItem.z_index не влияет на то, какой элемент управления получает уведомление.

См. также NOTIFICATION_MOUSE_ENTER_SELF.

NOTIFICATION_MOUSE_EXIT = 42 🔗

Отправляется, когда курсор мыши покидает видимую область элемента управления (и всех дочерних элементов управления), которая не перекрыта другими элементами управления или окнами, при условии, что его mouse_filter позволяет событию достичь его, и независимо от того, находится ли он в фокусе в данный момент или нет.

Примечание: CanvasItem.z_index не влияет на то, какой элемент управления получает уведомление.

См. также NOTIFICATION_MOUSE_EXIT_SELF.

NOTIFICATION_MOUSE_ENTER_SELF = 60 🔗

Экспериментальное: The reason this notification is sent may change in the future.

Sent when the mouse cursor enters the control's visible area, that is not occluded behind other Controls or Windows, provided its mouse_filter lets the event reach it and regardless if it's currently focused or not.

Note: CanvasItem.z_index doesn't affect which Control receives the notification.

См. также NOTIFICATION_MOUSE_ENTER.

NOTIFICATION_MOUSE_EXIT_SELF = 61 🔗

Экспериментальное: The reason this notification is sent may change in the future.

Отправляется, когда курсор мыши покидает видимую область элемента управления, которая не перекрыта другими элементами управления или окнами, при условии, что его mouse_filter позволяет событию достичь его, и независимо от того, находится ли он в фокусе в данный момент или нет.

Примечание: CanvasItem.z_index не влияет на то, какой элемент управления получит уведомление.

См. также NOTIFICATION_MOUSE_EXIT.

NOTIFICATION_FOCUS_ENTER = 43 🔗

Отправляется, когда узел захватывает фокус.

NOTIFICATION_FOCUS_EXIT = 44 🔗

Уведомление отправляется, когда узел теряет фокус.

Это уведомление отправляется в обратном порядке.

NOTIFICATION_THEME_CHANGED = 45 🔗

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

  • Свойство theme изменено на этом узле или любом из его предков.

  • Свойство theme_type_variation изменено на этом узле.

  • Изменено одно из переопределений свойств темы узла.

  • Узел входит в дерево сцены.

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

Примечание: Это уведомление получено вместе с Node.NOTIFICATION_ENTER_TREE, поэтому, если вы создаете сцену, дочерние узлы еще не будут инициализированы. Вы можете использовать его для настройки тем для этого узла, дочерних узлов, созданных из скрипта, или, если вы хотите получить доступ к дочерним узлам, добавленным в редакторе, убедитесь, что узел готов, используя Node.is_node_ready().

func _notification(what):
    if what == NOTIFICATION_THEME_CHANGED:
        if not is_node_ready():
            await ready # Дождитесь сигнала готовности.
        $Label.add_theme_color_override("font_color", Color.YELLOW)

NOTIFICATION_SCROLL_BEGIN = 47 🔗

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

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

NOTIFICATION_SCROLL_END = 48 🔗

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

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

NOTIFICATION_LAYOUT_DIRECTION_CHANGED = 49 🔗

Отправляется, когда направление макета элемента управления изменяется с LTR или RTL или наоборот. Это уведомление распространяется на дочерние узлы Control в результате изменения layout_direction.


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

Array[NodePath] accessibility_controls_nodes = [] 🔗

Пути к узлам, которые контролируются данным узлом.


Array[NodePath] accessibility_described_by_nodes = [] 🔗

Пути к узлам, описывающие данный узел.


String accessibility_description = "" 🔗

  • void set_accessibility_description(value: String)

  • String get_accessibility_description()

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


Array[NodePath] accessibility_flow_to_nodes = [] 🔗

Пути к узлам, в которые впадает данный узел.


Array[NodePath] accessibility_labeled_by_nodes = [] 🔗

Пути к узлам, которые маркируют данный узел.


AccessibilityLiveMode accessibility_live = 0 🔗

Режим обновления активной области. Активная область — это Node, который обновляется в результате внешнего события, когда фокус пользователя может быть в другом месте.


String accessibility_name = "" 🔗

  • void set_accessibility_name(value: String)

  • String get_accessibility_name()

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


float anchor_bottom = 0.0 🔗

Прикрепляет нижний край узла к началу координат, центру или концу его родительского элемента управления. Изменяет способ обновления нижнего смещения при перемещении узла или изменении его размера. Для удобства можно использовать одну из констант Anchor.


float anchor_left = 0.0 🔗

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


float anchor_right = 0.0 🔗

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


float anchor_top = 0.0 🔗

Прикрепляет верхний край узла к началу координат, центру или концу его родительского элемента управления. Изменяет способ обновления верхнего смещения при перемещении узла или изменении его размера. Для удобства можно использовать одну из констант Anchor.


bool auto_translate 🔗

  • void set_auto_translate(value: bool)

  • bool is_auto_translating()

Устарело: Use Node.auto_translate_mode and Node.can_auto_translate() instead.

Включает/выключает автоматическую замену текста на переведенную версию в зависимости от текущей локали.


bool clip_contents = false 🔗

  • void set_clip_contents(value: bool)

  • bool is_clipping_contents()

Включает, следует ли обрезать отрисовку дочерних элементов на основе CanvasItem до прямоугольника этого элемента управления. Если true, части дочернего элемента, которые будут видны за пределами прямоугольника этого элемента управления, не будут отрисовываться и не будут получать входные данные.


Vector2 custom_minimum_size = Vector2(0, 0) 🔗

  • void set_custom_minimum_size(value: Vector2)

  • Vector2 get_custom_minimum_size()

Минимальный размер ограничивающего прямоугольника узла. Если вы установите его на значение больше, чем (0, 0), ограничивающий прямоугольник узла всегда будет иметь по крайней мере этот размер. Обратите внимание, что узлы Control имеют свой внутренний минимальный размер, возвращаемый get_minimum_size(). Он зависит от содержимого элемента управления, такого как текст, текстуры или поля стилей. Фактический минимальный размер — это максимальное значение этого свойства и внутренний минимальный размер (см. get_combined_minimum_size()).


FocusBehaviorRecursive focus_behavior_recursive = 0 🔗

Определяет, какие элементы управления могут быть сфокусированы вместе с focus_mode. См. get_focus_mode_with_override(). Поскольку поведение по умолчанию — FOCUS_BEHAVIOR_INHERITED, это можно использовать для предотвращения фокусировки всех дочерних элементов управления.


FocusMode focus_mode = 0 🔗

Определяет, какие элементы управления могут быть сфокусированы. Только один элемент управления может быть сфокусирован одновременно, и сфокусированный элемент управления будет получать события клавиатуры, геймпада и мыши в _gui_input(). Используйте get_focus_mode_with_override(), чтобы определить, может ли элемент управления захватить фокус, поскольку focus_behavior_recursive также влияет на него. См. также grab_focus().


NodePath focus_neighbor_bottom = NodePath("") 🔗

Сообщает Godot, какому узлу следует передать фокус, если пользователь нажимает стрелку вниз на клавиатуре или вниз на геймпаде по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_down. Узел должен быть Control. Если это свойство не задано, Godot передаст фокус ближайшему Control к нижней части этого.


NodePath focus_neighbor_left = NodePath("") 🔗

Сообщает Godot, какому узлу следует передать фокус, если пользователь нажимает левую стрелку на клавиатуре или левую на геймпаде по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_left. Узел должен быть Control. Если это свойство не задано, Godot передаст фокус ближайшему Control слева от этого.


NodePath focus_neighbor_right = NodePath("") 🔗

Сообщает Godot, какому узлу следует передать фокус, если пользователь нажимает стрелку вправо на клавиатуре или вправо на геймпаде по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_right. Узел должен быть Control. Если это свойство не задано, Godot передаст фокус ближайшему Control справа от этого.


NodePath focus_neighbor_top = NodePath("") 🔗

Сообщает Godot, какому узлу следует передать фокус, если пользователь нажимает верхнюю стрелку на клавиатуре или верхнюю на геймпаде по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_up. Узел должен быть Control. Если это свойство не задано, Godot передаст фокус ближайшему Control к верхней части этого.


NodePath focus_next = NodePath("") 🔗

Сообщает Godot, на какой узел следует направить фокус, если пользователь нажимает Tab на клавиатуре по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_focus_next.

Если это свойство не задано, Godot выберет «лучшее предположение» на основе окружающих узлов в дереве сцены.


NodePath focus_previous = NodePath("") 🔗

Сообщает Godot, на какой узел следует направить фокус, если пользователь нажимает Shift + Tab на клавиатуре по умолчанию. Вы можете изменить клавишу, отредактировав действие ввода ProjectSettings.input/ui_focus_prev.

Если это свойство не задано, Godot выберет «лучшее предположение» на основе окружающих узлов в дереве сцены.


Vector2 global_position 🔗

Глобальное положение узла относительно мира (обычно по отношению к CanvasLayer).


GrowDirection grow_horizontal = 1 🔗

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


GrowDirection grow_vertical = 1 🔗

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


LayoutDirection layout_direction = 0 🔗

Управляет направлением макета и направлением написания текста. Для некоторых языков (например, арабского и иврита) необходимы макеты справа налево. См. также is_layout_rtl().


bool localize_numeral_system = true 🔗

  • void set_localize_numeral_system(value: bool)

  • bool is_localizing_numeral_system()

Если true, автоматически преобразует номера строк кода, индексы списков, значения SpinBox и ProgressBar из западно-арабской системы счисления (0..9) в системы счисления, используемые в текущей локали.

Примечание: Числа в тексте не преобразуются автоматически, это можно сделать вручную, используя TextServer.format_number().


MouseBehaviorRecursive mouse_behavior_recursive = 0 🔗

Определяет, какие элементы управления могут получать ввод мыши вместе с mouse_filter. См. get_mouse_filter_with_override(). Поскольку поведение по умолчанию — MOUSE_BEHAVIOR_INHERITED, это можно использовать для предотвращения получения ввода мыши всеми дочерними элементами управления.


CursorShape mouse_default_cursor_shape = 0 🔗

Форма курсора по умолчанию для этого элемента управления. Полезно для плагинов Godot и приложений или игр, которые используют системные курсоры мыши.

Примечание: В Linux формы могут различаться в зависимости от темы курсора системы.


MouseFilter mouse_filter = 0 🔗

Определяет, какие элементы управления смогут получать события ввода с помощью кнопки мыши через _gui_input() и сигналы mouse_entered и mouse_exited. Также определяет, как эти события должны распространяться. См. константы, чтобы узнать, что делает каждая из них. Используйте get_mouse_filter_with_override(), чтобы определить, может ли элемент управления получать ввод с помощью мыши, поскольку mouse_behavior_recursive также влияет на него.


bool mouse_force_pass_scroll_events = true 🔗

  • void set_force_pass_scroll_events(value: bool)

  • bool is_force_pass_scroll_events()

При включении события колеса прокрутки, обработанные _gui_input(), будут передаваться родительскому элементу управления, даже если mouse_filter установлен на MOUSE_FILTER_STOP.

Вы должны отключить его в корне вашего пользовательского интерфейса, если вы не хотите, чтобы события прокрутки передавались в обработку Node._unhandled_input().

Примечание: Поскольку это свойство по умолчанию равно true, это позволяет вложенным прокручиваемым контейнерам работать из коробки.


float offset_bottom = 0.0 🔗

Расстояние между нижним краем узла и его родительским элементом управления, основанное на anchor_bottom.

Смещения часто контролируются одним или несколькими родительскими узлами Container, поэтому вам не следует изменять их вручную, если ваш узел является прямым потомком Container. Смещения обновляются автоматически при перемещении или изменении размера узла.


float offset_left = 0.0 🔗

Расстояние между левым краем узла и его родительским элементом управления, основанное на anchor_left.

Смещения часто контролируются одним или несколькими родительскими узлами Container, поэтому вам не следует изменять их вручную, если ваш узел является прямым потомком Container. Смещения обновляются автоматически при перемещении или изменении размера узла.


float offset_right = 0.0 🔗

Расстояние между правым краем узла и его родительским элементом управления, основанное на anchor_right.

Смещения часто контролируются одним или несколькими родительскими узлами Container, поэтому вам не следует изменять их вручную, если ваш узел является прямым потомком Container. Смещения обновляются автоматически при перемещении или изменении размера узла.


float offset_top = 0.0 🔗

Расстояние между верхним краем узла и его родительским элементом управления, основанное на anchor_top.

Смещения часто контролируются одним или несколькими родительскими узлами Container, поэтому вам не следует изменять их вручную, если ваш узел является прямым потомком Container. Смещения обновляются автоматически при перемещении или изменении размера узла.


Vector2 pivot_offset = Vector2(0, 0) 🔗

По умолчанию точкой опоры узла является его верхний левый угол. При изменении его rotation или scale он будет вращаться или масштабироваться вокруг этой точки опоры.

Фактическое смещение — это суммарное значение этого свойства и pivot_offset_ratio.


Vector2 pivot_offset_ratio = Vector2(0, 0) 🔗

  • void set_pivot_offset_ratio(value: Vector2)

  • Vector2 get_pivot_offset_ratio()

Аналогично pivot_offset, но выражено в виде равномерного вектора, где Vector2(0, 0) — верхний левый угол этого элемента управления, а Vector2(1, 1) — его нижний правый угол. Установите это свойство в Vector2(0.5, 0.5), чтобы выполнить поворот вокруг центра этого элемента управления.

Фактическое смещение — это суммарное значение этого свойства и pivot_offset.


Vector2 position = Vector2(0, 0) 🔗

Положение узла относительно содержащего его узла. Соответствует верхнему левому углу прямоугольника. Свойство не зависит от pivot_offset.


float rotation = 0.0 🔗

  • void set_rotation(value: float)

  • float get_rotation()

Вращение узла вокруг его опорной точки в радианах. См. pivot_offset, чтобы изменить положение опорной точки.

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


float rotation_degrees 🔗

  • void set_rotation_degrees(value: float)

  • float get_rotation_degrees()

Вспомогательное свойство для доступа к rotation в градусах вместо радиан.


Vector2 scale = Vector2(1, 1) 🔗

Масштаб узла относительно его size. Измените это свойство, чтобы масштабировать узел вокруг его pivot_offset. Подсказка элемента управления также будет масштабироваться в соответствии с этим значением.

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

Примечание: FontFile.oversampling не учитывает Control scale. Это означает, что масштабирование вверх/вниз приведет к тому, что растровые шрифты и растрированные (не MSDF) динамические шрифты будут выглядеть размытыми или пикселизированными. Чтобы текст оставался четким независимо от масштаба, можно включить рендеринг шрифта MSDF, включив ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (применяется только к шрифту проекта по умолчанию) или включив Multichannel Signed Distance Field в параметрах импорта DynamicFont для пользовательских шрифтов. В системных шрифтах SystemFont.multichannel_signed_distance_field можно включить в инспекторе.

Примечание: Если узел Control является дочерним элементом узла Container, масштаб будет сброшен до Vector2(1, 1) при создании экземпляра сцены. Чтобы задать масштаб элемента Control при его создании, подождите один кадр с помощью await get_tree().process_frame, а затем задайте его свойство scale.


Node shortcut_context 🔗

  • void set_shortcut_context(value: Node)

  • Node get_shortcut_context()

Node, который должен быть родителем сфокусированного Control, чтобы сочетание клавиш было активировано. Если null, сочетание клавиш может быть активировано, когда любой элемент управления находится в фокусе (глобальное сочетание клавиш). Это позволяет принимать сочетания клавиш только тогда, когда пользователь сфокусировал определенную область графического интерфейса.


Vector2 size = Vector2(0, 0) 🔗

Размер ограничивающего прямоугольника узла в системе координат узла. Узлы Container обновляют это свойство автоматически.


BitField[SizeFlags] size_flags_horizontal = 1 🔗

  • void set_h_size_flags(value: BitField[SizeFlags])

  • BitField[SizeFlags] get_h_size_flags()

Сообщает родительским узлам Container, как они должны изменить размер и разместить узел на оси X. Используйте комбинацию констант SizeFlags, чтобы изменить флаги. Посмотрите константы, чтобы узнать, что делает каждая из них.


float size_flags_stretch_ratio = 1.0 🔗

  • void set_stretch_ratio(value: float)

  • float get_stretch_ratio()

Если узел и хотя бы один из его соседей используют флаг размера SIZE_EXPAND, родительский Container позволит ему занять больше или меньше места в зависимости от этого свойства. Если этот узел имеет коэффициент растяжения 2, а его сосед — коэффициент 1, этот узел займет две трети доступного пространства.


BitField[SizeFlags] size_flags_vertical = 1 🔗

  • void set_v_size_flags(value: BitField[SizeFlags])

  • BitField[SizeFlags] get_v_size_flags()

Сообщает родительским узлам Container, как они должны изменить размер и разместить узел на оси Y. Используйте комбинацию констант SizeFlags, чтобы изменить флаги. Посмотрите константы, чтобы узнать, что делает каждая из них.


Theme theme 🔗

Ресурс Theme, который использует этот узел и все его дочерние элементы Control и Window. Если дочерний узел имеет свой собственный набор ресурсов Theme, элементы темы объединяются с определениями дочернего элемента, имеющими более высокий приоритет.

Примечание: Стили Window не будут иметь никакого эффекта, если окно не встроено.


StringName theme_type_variation = &"" 🔗

Имя вариации типа темы, используемой этим Control для поиска собственных элементов темы. Если пусто, используется имя класса узла (например, Button для элемента управления Button), а также имена классов всех родительских классов (в порядке наследования).

Если установлено, это свойство дает наивысший приоритет типу указанного имени. Этот тип, в свою очередь, может расширять другой тип, образуя цепочку зависимостей. См. Theme.set_type_variation(). Если элемент темы не может быть найден с помощью этого типа или его базовых типов, поиск возвращается к именам классов.

Примечание: Для поиска собственных элементов Control используйте различные методы get_theme_* без указания theme_type.

Примечание: Элементы темы ищутся в порядке дерева, от ветви к корню, где каждый узел Control проверяется на предмет его свойства theme. Возвращается самое раннее совпадение с любым именем типа/класса. Тема уровня проекта и тема по умолчанию проверяются последними.


AutoTranslateMode tooltip_auto_translate_mode = 0 🔗

Определяет, должен ли текст подсказки автоматически меняться на переведенную версию в зависимости от текущей локали. Использует тот же режим автоматического перевода, что и этот элемент управления, если задано значение Node.AUTO_TRANSLATE_MODE_INHERIT.

Примечание: Подсказки, настроенные с помощью _make_custom_tooltip(), не используют этот режим автоматического перевода автоматически.


String tooltip_text = "" 🔗

  • void set_tooltip_text(value: String)

  • String get_tooltip_text()

Текст подсказки по умолчанию. Подсказка появляется, когда курсор мыши пользователя остается неподвижным над этим элементом управления в течение нескольких секунд, при условии, что свойство mouse_filter не равно MOUSE_FILTER_IGNORE. Время, необходимое для появления подсказки, можно изменить с помощью настройки ProjectSettings.gui/timers/tooltip_delay_sec.

Эта строка является возвращаемым значением по умолчанию для get_tooltip(). Переопределите _get_tooltip() для динамической генерации текста подсказки. Переопределите _make_custom_tooltip() для настройки пользовательского интерфейса и поведения подсказки.

Всплывающее окно подсказки будет использовать либо реализацию по умолчанию, либо пользовательскую, которую вы можете предоставить, переопределив _make_custom_tooltip(). Подсказка по умолчанию включает PopupPanel и Label, свойства темы которых можно настроить с помощью методов Theme с "TooltipPanel" и "TooltipLabel" соответственно. Например:

var style_box = StyleBoxFlat.new()
style_box.set_bg_color(Color(1, 1, 0))
style_box.set_border_width_all(2)
# Здесь мы предполагаем, что свойству `Theme` заранее назначена пользовательская тема.
theme.set_stylebox("panel", "TooltipPanel", style_box)
theme.set_color("font_color", "TooltipLabel", Color(0, 1, 1))

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

String _accessibility_get_contextual_info() virtual const 🔗

Возвращает описание сочетаний клавиш и другую контекстную справку для этого элемента управления.


bool _can_drop_data(at_position: Vector2, data: Variant) virtual const 🔗

Godot вызывает этот метод, чтобы проверить, можно ли перетащить data из метода _get_drag_data() элемента управления в at_position. at_position является локальным для этого элемента управления.

Этот метод следует использовать только для проверки данных. Обрабатывайте данные в _drop_data().

Примечание: Если перетаскивание было инициировано сочетанием клавиш или accessibility_drag(), at_position устанавливается равным Vector2.INF, а текущая позиция выбранного элемента/текста должна использоваться в качестве позиции перетаскивания.

func _can_drop_data(position, data):
    # Проверьте позицию, если она имеет к вам отношение.
    # В противном случае просто проверьте данные.
    return typeof(data) == TYPE_DICTIONARY and data.has("expected")

void _drop_data(at_position: Vector2, data: Variant) virtual 🔗

Godot вызывает этот метод, чтобы передать вам data из результата метода _get_drag_data() элемента управления. Godot сначала вызывает _can_drop_data(), чтобы проверить, разрешено ли перетаскивать data в at_position, где at_position является локальным для данного элемента управления.

Примечание: Если перетаскивание было инициировано сочетанием клавиш или accessibility_drag(), at_position устанавливается равным Vector2.INF, а текущая позиция выбранного элемента/текста должна использоваться в качестве позиции перетаскивания.

func _can_drop_data(position, data):
    return typeof(data) == TYPE_DICTIONARY and data.has("color")

func _drop_data(position, data):
    var color = data["color"]

String _get_accessibility_container_name(node: Node) virtual const 🔗

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


Variant _get_drag_data(at_position: Vector2) virtual 🔗

Godot вызывает этот метод для получения данных, которые можно перетаскивать на элементы управления, ожидающие перетаскивания. Возвращает null, если данных для перетаскивания нет. Элементы управления, которые хотят получать перетаскиваемые данные, должны реализовывать _can_drop_data() и _drop_data(). at_position является локальным для этого элемента управления. Перетаскивание может быть принудительно выполнено с помощью force_drag().

Предварительный просмотр, который будет следовать за указателем мыши и должен отображать данные, можно установить с помощью set_drag_preview(). Рекомендуется установить предварительный просмотр в этом методе.

Примечание: Если перетаскивание было инициировано сочетанием клавиш или accessibility_drag(), at_position устанавливается равным Vector2.INF, а текущее положение выбранного элемента/текста должно использоваться в качестве позиции перетаскивания.

func _get_drag_data(position):
    var mydata = make_data() # Это ваш пользовательский метод генерации данных перетаскивания.
    set_drag_preview(make_preview(mydata)) # Это ваш пользовательский метод, генерирующий предварительный просмотр данных перетаскивания.
    return mydata

Vector2 _get_minimum_size() virtual const 🔗

Виртуальный метод, реализуемый пользователем. Возвращает минимальный размер для этого элемента управления. Альтернатива custom_minimum_size для управления минимальным размером через код. Фактический минимальный размер будет максимальным значением этих двух (по каждой оси отдельно).

Если не переопределено, по умолчанию Vector2.ZERO.

Примечание: Этот метод не будет вызван, если скрипт прикреплен к узлу Control, который уже переопределяет его минимальный размер (например, Label, Button, PanelContainer и т. д.). Его можно использовать только с большинством базовых узлов GUI, таких как Control, Container, Panel и т. д.


String _get_tooltip(at_position: Vector2) virtual const 🔗

Виртуальный метод, реализуемый пользователем. Возвращает текст подсказки для позиции at_position в локальных координатах элемента управления, который обычно отображается, когда курсор находится над этим элементом управления. См. get_tooltip().

Примечание: Если этот метод возвращает пустую String и _make_custom_tooltip() не переопределен, подсказка не отображается.


void _gui_input(event: InputEvent) virtual 🔗

Виртуальный метод, реализуемый пользователем. Переопределите этот метод для обработки и принятия ввода в элементах пользовательского интерфейса. См. также accept_event().

Пример: Щелкните элемент управления, чтобы напечатать сообщение:

func _gui_input(event):
    if event is InputEventMouseButton:
        if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
            print("I've been clicked D:")

Если event наследует InputEventMouse, этот метод не будет вызван, когда:

  • элемент управления mouse_filter установлен на MOUSE_FILTER_IGNORE;

  • элемент управления перекрыт другим элементом управления сверху, у которого mouse_filter не установлен на MOUSE_FILTER_IGNORE;

  • родительский элемент управления имеет mouse_filter установлен на MOUSE_FILTER_STOP или принял событие;

  • родительский элемент управления имеет clip_contents, а положение event находится вне прямоугольника родителя;

  • положение event находится вне элемента управления (см. _has_point()).

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


bool _has_point(point: Vector2) virtual const 🔗

Виртуальный метод, реализуемый пользователем. Возвращает, находится ли заданный point внутри этого элемента управления.

Если не переопределено, поведение по умолчанию — проверка того, находится ли точка внутри Rect элемента управления.

Примечание: Если вы хотите проверить, находится ли точка внутри элемента управления, вы можете использовать Rect2(Vector2.ZERO, size).has_point(point).


Object _make_custom_tooltip(for_text: String) virtual const 🔗

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

Возвращаемый узел должен быть типа Control или производного от Control. Он может иметь дочерние узлы любого типа. Он освобождается, когда всплывающая подсказка исчезает, поэтому всегда предоставляйте новый экземпляр (если вы хотите использовать уже существующий узел из дерева сцены, вы можете продублировать его и передать продублированный экземпляр). Если возвращается null или узел, не являющийся Control, будет использоваться стандартная всплывающая подсказка.

Возвращаемый узел будет добавлен в качестве дочернего элемента к PopupPanel, поэтому вам следует предоставлять только содержимое этой панели. Этот PopupPanel можно оформить с помощью Theme.set_stylebox() для типа "TooltipPanel" (см. tooltip_text для примера).

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

Примечание: Узел (и любые соответствующие дочерние элементы) должны иметь CanvasItem.visible со значением true при возврате, иначе область просмотра, которая его создает, не сможет надежно рассчитать его минимальный размер.

Примечание: Если этот метод переопределен, он вызывается, даже если get_tooltip() возвращает пустую строку. В этом случае со всплывающей подсказкой по умолчанию она не отображается. Чтобы скопировать это поведение, верните null в этом методе, когда for_text пуст.

Пример: Используйте созданный узел в качестве всплывающей подсказки:

func _make_custom_tooltip(for_text):
    var label = Label.new()
    label.text = for_text
    return label

Пример: Используйте экземпляр сцены в качестве всплывающей подсказки:

func _make_custom_tooltip(for_text):
    var tooltip = preload("res://some_tooltip_scene.tscn").instantiate()
    tooltip.get_node("Label").text = for_text
    return tooltip

Array[Vector3i] _structured_text_parser(args: Array, text: String) virtual const 🔗

Функция переопределения пользовательского алгоритма BiDi.

Возвращает Array из Vector3i текстовых диапазонов и направлений баз текста в порядке слева направо. Диапазоны должны охватывать весь исходный text без перекрытий. Алгоритм BiDi будет использоваться для каждого диапазона отдельно.


void accept_event() 🔗

Отмечает событие ввода как обработанное. После того, как вы принимаете событие ввода, оно перестает распространяться, даже на узлы, прослушивающие Node._unhandled_input() или Node._unhandled_key_input().

Примечание: Это не влияет на методы в Input, а только на способ распространения событий.


void accessibility_drag() 🔗

Запускает операцию перетаскивания без использования мыши.


void accessibility_drop() 🔗

Завершает операцию перетаскивания без использования мыши.


void add_theme_color_override(name: StringName, color: Color) 🔗

Создает локальное переопределение для темы Color с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_color_override().

С. также get_theme_color().

Пример: Переопределить цвет Label и сбросить его позже:

# Для дочернего узла Label «MyLabel» переопределите цвет его шрифта с помощью пользовательского значения.
$MyLabel.add_theme_color_override("font_color", Color(1, 0.5, 0))
# Сбросить цвет шрифта дочерней метки.
$MyLabel.remove_theme_color_override("font_color")
# В качестве альтернативы его можно переопределить значением по умолчанию из типа метки.
$MyLabel.add_theme_color_override("font_color", get_theme_color("font_color", "Label"))

void add_theme_constant_override(name: StringName, constant: int) 🔗

Создает локальное переопределение для константы темы с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_constant_override().

См. также get_theme_constant().


void add_theme_font_override(name: StringName, font: Font) 🔗

Создает локальное переопределение для темы Font с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_font_override().

См. также get_theme_font().


void add_theme_font_size_override(name: StringName, font_size: int) 🔗

Создает локальное переопределение для размера шрифта темы с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_font_size_override().

См. также get_theme_font_size().


void add_theme_icon_override(name: StringName, texture: Texture2D) 🔗

Создает локальное переопределение для значка темы с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_icon_override().

См. также get_theme_icon().


void add_theme_stylebox_override(name: StringName, stylebox: StyleBox) 🔗

Создает локальное переопределение для темы StyleBox с указанным name. Локальные переопределения всегда имеют приоритет при извлечении элементов темы для элемента управления. Переопределение можно удалить с помощью remove_theme_stylebox_override().

См. также get_theme_stylebox().

Пример: Измените свойство в StyleBox, продублировав его:

# В приведенном ниже фрагменте предполагается, что дочернему узлу «MyButton» назначен StyleBoxFlat.
# Ресурсы являются общими для всех экземпляров, поэтому нам нужно их дублировать.
# чтобы избежать изменения внешнего вида всех остальных кнопок.
var new_stylebox_normal = $MyButton.get_theme_stylebox("normal").duplicate()
new_stylebox_normal.border_width_top = 3
new_stylebox_normal.border_color = Color(0, 1, 0.5)
$MyButton.add_theme_stylebox_override("normal", new_stylebox_normal)
# Удалить переопределение stylebox.
$MyButton.remove_theme_stylebox_override("normal")

void begin_bulk_theme_override() 🔗

Запрещает методам *_theme_*_override выдавать NOTIFICATION_THEME_CHANGED до тех пор, пока не будет вызван end_bulk_theme_override().


void end_bulk_theme_override() 🔗

Завершает массовое обновление переопределения темы. См. begin_bulk_theme_override().


Control find_next_valid_focus() const 🔗

Находит следующий (ниже в дереве) Control, который может получить фокус.


Control find_prev_valid_focus() const 🔗

Находит предыдущий (выше в дереве) Control, который может получить фокус.


Control find_valid_focus_neighbor(side: Side) const 🔗

Находит следующий Control, который может получить фокус на указанной Side.

Примечание: Это отличается от get_focus_neighbor(), который возвращает путь указанного соседа фокуса.


void force_drag(data: Variant, preview: Control) 🔗

Принудительно перетаскивает и обходит _get_drag_data() и set_drag_preview(), передавая data и preview. Перетаскивание начнется, даже если мышь не находится над этим элементом управления и не нажата на него.

Методы _can_drop_data() и _drop_data() должны быть реализованы в элементах управления, которые хотят получать данные перетаскивания.


float get_anchor(side: Side) const 🔗

Возвращает якорь для указанного Side. Метод получения для anchor_bottom, anchor_left, anchor_right и anchor_top.


Vector2 get_begin() const 🔗

Возвращает offset_left и offset_top. См. также position.


Vector2 get_combined_minimum_size() const 🔗

Возвращает объединенный минимальный размер из custom_minimum_size и get_minimum_size().


Vector2 get_combined_pivot_offset() const 🔗

Возвращает суммарное значение pivot_offset и pivot_offset_ratio в пикселях. Коэффициент умножается на размер элемента управления.


CursorShape get_cursor_shape(position: Vector2 = Vector2(0, 0)) const 🔗

Возвращает форму курсора мыши для этого элемента управления при наведении на position в локальных координатах. Для большинства элементов управления это то же самое, что и mouse_default_cursor_shape, но некоторые встроенные элементы управления реализуют более сложную логику.


Vector2 get_end() const 🔗

Возвращает offset_right и offset_bottom.


FocusMode get_focus_mode_with_override() const 🔗

Возвращает focus_mode, но учитывает focus_behavior_recursive. Если focus_behavior_recursive установлен на FOCUS_BEHAVIOR_DISABLED или установлен на FOCUS_BEHAVIOR_INHERITED, а его предок установлен на FOCUS_BEHAVIOR_DISABLED, то возвращается FOCUS_NONE.


NodePath get_focus_neighbor(side: Side) const 🔗

Возвращает соседа фокуса для указанного Side. Метод получения для focus_neighbor_bottom, focus_neighbor_left, focus_neighbor_right и focus_neighbor_top.

Примечание: Чтобы найти следующий Control на указанном Side, даже если сосед не назначен, используйте find_valid_focus_neighbor().


Rect2 get_global_rect() const 🔗

Возвращает положение и размер элемента управления относительно содержащего его холста. См. global_position и size.

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

Примечание: Установка Viewport.gui_snap_controls_to_pixels в true может привести к неточностям округления между отображаемым элементом управления и возвращаемым Rect2.


Vector2 get_minimum_size() const 🔗

Возвращает минимальный размер для этого элемента управления. См. custom_minimum_size.


MouseFilter get_mouse_filter_with_override() const 🔗

Возвращает mouse_filter, но учитывает mouse_behavior_recursive. Если mouse_behavior_recursive установлен на MOUSE_BEHAVIOR_DISABLED или установлен на MOUSE_BEHAVIOR_INHERITED, а его предок установлен на MOUSE_BEHAVIOR_DISABLED, то возвращается MOUSE_FILTER_IGNORE.


float get_offset(offset: Side) const 🔗

Возвращает смещение для указанного Side. Метод получения для offset_bottom, offset_left, offset_right и offset_top.


Vector2 get_parent_area_size() const 🔗

Возвращает ширину/высоту, занимаемую родительским элементом управления.


Control get_parent_control() const 🔗

Возвращает родительский управляющий узел.


Rect2 get_rect() const 🔗

Возвращает положение и размер элемента управления в системе координат содержащего узла. См. position, scale и size.

Примечание: Если rotation не является поворотом по умолчанию, результирующий размер не имеет смысла.

Примечание: Установка Viewport.gui_snap_controls_to_pixels в true может привести к неточностям округления между отображаемым элементом управления и возвращаемым Rect2.


Vector2 get_screen_position() const 🔗

Возвращает положение этого Control в глобальных экранных координатах (т. е. с учетом положения окна). В основном полезно для плагинов редактора.

Эквивалентно get_screen_transform().origin (см. CanvasItem.get_screen_transform()).

Пример: Отобразить всплывающее окно в позиции курсора мыши:

popup_menu.position = get_screen_position() + get_screen_transform().basis_xform(get_local_mouse_position())

# Приведённый выше код эквивалентен следующему:
popup_menu.position = get_screen_transform() * get_local_mouse_position()

popup_menu.reset_size()
popup_menu.popup()

Color get_theme_color(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает Color из первой совпадающей Theme в дереве, если эта Theme имеет элемент цвета с указанными name и theme_type. Если theme_type опущен, в качестве типа используется имя класса текущего элемента управления или theme_type_variation, если он определен. Если тип является именем класса, его родительские классы также проверяются в порядке наследования. Если тип является вариацией, его базовые типы проверяются в порядке зависимости, затем проверяются имя класса элемента управления и его родительские классы.

Для текущего элемента управления сначала рассматриваются его локальные переопределения (см. add_theme_color_override()), затем его назначенная theme. После текущего элемента управления рассматриваются каждый родительский элемент управления и назначенная ему theme; элементы управления без назначенной theme пропускаются. Если в дереве не найдено соответствующей Theme, используются пользовательский проект Theme (см. ProjectSettings.gui/theme/custom) и Theme по умолчанию (см. ThemeDB).

func _ready():
    # Получить цвет шрифта, определенный для текущего класса элемента управления, если он существует.
    modulate = get_theme_color("font_color")
    # Получите цвет шрифта, определенный для класса Button.
    modulate = get_theme_color("font_color", "Button")

int get_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает константу из первой совпадающей Theme в дереве, если эта Theme имеет константный элемент с указанными name и theme_type.

Подробности см. в get_theme_color().


float get_theme_default_base_scale() const 🔗

Возвращает базовое значение масштаба по умолчанию из первой соответствующей Theme в дереве, если эта Theme имеет допустимое значение Theme.default_base_scale.

Подробнее см. в get_theme_color().


Font get_theme_default_font() const 🔗

Возвращает шрифт по умолчанию из первой соответствующей Theme в дереве, если эта Theme имеет допустимое значение Theme.default_font.

Подробности см. в get_theme_color().


int get_theme_default_font_size() const 🔗

Возвращает значение размера шрифта по умолчанию из первой соответствующей Theme в дереве, если эта Theme имеет допустимое значение Theme.default_font_size.

Подробности см. в get_theme_color().


Font get_theme_font(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает Font из первой соответствующей Theme в дереве, если эта Theme имеет элемент шрифта с указанными name и name.

Подробности см. в get_theme_color().


int get_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает размер шрифта из первой соответствующей Theme в дереве, если эта Theme имеет элемент размера шрифта с указанными name и theme_type.

Подробности см. в get_theme_color().


Texture2D get_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает значок из первой соответствующей Theme в дереве, если эта Theme имеет элемент значка с указанными name и theme_type.

Подробности см. в get_theme_color().


StyleBox get_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает StyleBox из первой соответствующей Theme в дереве, если эта Theme имеет элемент stylebox с указанными name и theme_type.

Подробнее см. get_theme_color().


String get_tooltip(at_position: Vector2 = Vector2(0, 0)) const 🔗

Возвращает текст подсказки для позиции at_position в локальных координатах элемента управления, который обычно отображается, когда курсор находится над этим элементом управления. По умолчанию он возвращает tooltip_text.

Этот метод можно переопределить, чтобы настроить его поведение. См. _get_tooltip().

Примечание: Если этот метод возвращает пустую String и _make_custom_tooltip() не переопределен, подсказка не отображается.


void grab_click_focus() 🔗

Создает InputEventMouseButton, который пытается щелкнуть элемент управления. Если событие получено, элемент управления получает фокус.

func _process(delta):
    grab_click_focus() # При щелчке по другому узлу управления вместо него будет выполнен щелчок по этому узлу.

void grab_focus(hide_focus: bool = false) 🔗

Перехватывает фокус у другого элемента управления и становится сфокусированным элементом управления (см. focus_mode).

Если hide_focus имеет значение true, элемент управления не будет визуально отображать свое сфокусированное состояние. Не оказывает никакого эффекта на LineEdit и TextEdit, если ProjectSettings.gui/common/show_focus_state_on_pointer_event имеет значение Control Supports Keyboard Input, или на любой элемент управления, если он имеет значение Always.

Примечание: Использование этого метода вместе с Callable.call_deferred() делает его более надежным, особенно при вызове внутри Node._ready().


bool has_focus(ignore_hidden_focus: bool = false) const 🔗

Возвращает true, если это текущий сфокусированный элемент управления. См. focus_mode.

Если ignore_hidden_focus равно true, элементы управления, фокус которых скрыт, всегда будут возвращать false. Скрытый фокус срабатывает автоматически, когда элементы управления получают фокус с помощью ввода мыши, или вручную с помощью grab_focus() с hide_focus, установленным в true.


bool has_theme_color(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет элемент цвета с указанными name и theme_type.

Подробнее см. get_theme_color().


bool has_theme_color_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для темы Color с указанным name в этом узле Control.

См. add_theme_color_override().


bool has_theme_constant(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет постоянный элемент с указанными name и theme_type.

Подробнее см. get_theme_color().


bool has_theme_constant_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для константы темы с указанным name в этом узле Control.

См. add_theme_constant_override().


bool has_theme_font(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет элемент шрифта с указанными name и theme_type.

Подробнее см. get_theme_color().


bool has_theme_font_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для темы Font с указанным name в этом узле Control.

См. add_theme_font_override().


bool has_theme_font_size(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет элемент размера шрифта с указанными name и theme_type.

Подробности см. в get_theme_color().


bool has_theme_font_size_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для размера шрифта темы с указанным name в этом узле Control.

См. add_theme_font_size_override().


bool has_theme_icon(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет элемент значка с указанными name и theme_type.

Подробнее см. get_theme_color().


bool has_theme_icon_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для значка темы с указанным name в этом узле Control.

См. add_theme_icon_override().


bool has_theme_stylebox(name: StringName, theme_type: StringName = &"") const 🔗

Возвращает true, если в дереве есть соответствующая Theme, которая имеет элемент stylebox с указанными name и theme_type.

Подробнее см. get_theme_color().


bool has_theme_stylebox_override(name: StringName) const 🔗

Возвращает true, если есть локальное переопределение для темы StyleBox с указанным name в этом узле Control.

См. add_theme_stylebox_override().


bool is_drag_successful() const 🔗

Возвращает true, если операция перетаскивания прошла успешно. Альтернатива Viewport.gui_is_drag_successful().

Лучше всего использовать с Node.NOTIFICATION_DRAG_END.


bool is_layout_rtl() const 🔗

Возвращает true, если макет справа налево. См. также layout_direction.


void release_focus() 🔗

Откажитесь от фокуса. Никакой другой элемент управления не сможет получить входные данные.


void remove_theme_color_override(name: StringName) 🔗

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


void remove_theme_constant_override(name: StringName) 🔗

Удаляет локальное переопределение для константы темы с указанным name, ранее добавленное add_theme_constant_override() или через панель инспектора.


void remove_theme_font_override(name: StringName) 🔗

Удаляет локальное переопределение для темы Font с указанным name, ранее добавленное add_theme_font_override() или через панель инспектора.


void remove_theme_font_size_override(name: StringName) 🔗

Удаляет локальное переопределение размера шрифта темы с указанным name, ранее добавленное add_theme_font_size_override() или через панель инспектора.


void remove_theme_icon_override(name: StringName) 🔗

Удаляет локальное переопределение для значка темы с указанным name, ранее добавленное add_theme_icon_override() или через панель инспектора.


void remove_theme_stylebox_override(name: StringName) 🔗

Удаляет локальное переопределение для темы StyleBox с указанным name, ранее добавленное add_theme_stylebox_override() или через панель инспектора.


void reset_size() 🔗

Сбрасывает размер до get_combined_minimum_size(). Это эквивалентно вызову set_size(Vector2()) (или любого размера ниже минимального).


void set_anchor(side: Side, anchor: float, keep_offset: bool = false, push_opposite_anchor: bool = true) 🔗

Устанавливает якорь для указанного Side на anchor. Метод установки для anchor_bottom, anchor_left, anchor_right и anchor_top.

Если keep_offset равен true, смещения не обновляются после этой операции.

Если push_opposite_anchor равен true и противоположный якорь перекрывает этот якорь, противоположный якорь будет иметь переопределенное значение. Например, если установить левый якорь на 1, а правый якорь имеет значение 0,5, правый якорь также получит значение 1. Если push_opposite_anchor равен false, левый якорь получит значение 0,5.


void set_anchor_and_offset(side: Side, anchor: float, offset: float, push_opposite_anchor: bool = false) 🔗

Работает так же, как set_anchor(), но вместо аргумента keep_offset и автоматического обновления смещения, он позволяет установить смещение самостоятельно (см. set_offset()).


void set_anchors_and_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0) 🔗

Устанавливает как предустановку якоря, так и предустановку смещения. См. set_anchors_preset() и set_offsets_preset().


void set_anchors_preset(preset: LayoutPreset, keep_offsets: bool = false) 🔗

Устанавливает якоря на preset из LayoutPreset enum. Это код, эквивалентный использованию меню Layout в 2D-редакторе.

Если keep_offsets равен true, положение элемента управления также будет обновлено.


void set_begin(position: Vector2) 🔗

Устанавливает offset_left и offset_top одновременно. Эквивалентно изменению position.


void set_drag_forwarding(drag_func: Callable, can_drop_func: Callable, drop_func: Callable) 🔗

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

Аргументы для каждого вызываемого объекта должны быть точно такими же, как и соответствующие им виртуальные методы, которые будут:


void set_drag_preview(control: Control) 🔗

Показывает заданный элемент управления на указателе мыши. Хорошее время для вызова этого метода — в _get_drag_data(). Элемент управления не должен находиться в дереве сцены. Вы не должны освобождать элемент управления и не должны сохранять ссылку на элемент управления после окончания перетаскивания. Он будет автоматически удален после завершения перетаскивания.

@export var color = Color(1, 0, 0, 1)

func _get_drag_data(position):
    # Используйте элемент управления, которого нет в дереве
    var cpb = ColorPickerButton.new()
    cpb.color = color
    cpb.size = Vector2(50, 50)
    set_drag_preview(cpb)
    return color

void set_end(position: Vector2) 🔗

Устанавливает offset_right и offset_bottom одновременно.


void set_focus_neighbor(side: Side, neighbor: NodePath) 🔗

Устанавливает соседа фокуса для указанного Side на Control в neighbor пути узла. Метод установки для focus_neighbor_bottom, focus_neighbor_left, focus_neighbor_right и focus_neighbor_top.


void set_global_position(position: Vector2, keep_offsets: bool = false) 🔗

Устанавливает global_position на заданное position.

Если keep_offsets равно true, вместо смещений будут обновлены якоря элемента управления.


void set_offset(side: Side, offset: float) 🔗

Устанавливает смещение для указанного Side на offset. Метод установки для offset_bottom, offset_left, offset_right и offset_top.


void set_offsets_preset(preset: LayoutPreset, resize_mode: LayoutPresetMode = 0, margin: int = 0) 🔗

Устанавливает смещения на preset из LayoutPreset. Это код, эквивалентный использованию меню Layout в 2D-редакторе.

Используйте параметр resize_mode с константами из LayoutPresetMode, чтобы лучше определить результирующий размер Control. Постоянный размер будет игнорироваться, если используется с предустановками, которые изменяют размер, например, PRESET_LEFT_WIDE.

Используйте параметр margin, чтобы определить зазор между Control и краями.


void set_position(position: Vector2, keep_offsets: bool = false) 🔗

Устанавливает position на заданное position.

Если keep_offsets равно true, то вместо смещений будут обновлены якоря элемента управления.


void set_size(size: Vector2, keep_offsets: bool = false) 🔗

Устанавливает размер (см. size).

Если keep_offsets равен true, вместо смещений будут обновлены якоря элемента управления.


void update_minimum_size() 🔗

Делает недействительным кэш размера в этом узле и в родительских узлах до верхнего уровня. Предназначено для использования с get_minimum_size() при изменении возвращаемого значения. Установка custom_minimum_size напрямую вызывает этот метод автоматически.


void warp_mouse(position: Vector2) 🔗

Перемещает курсор мыши в position, относительно position этого Control.

Примечание: warp_mouse() поддерживается только в Windows, macOS и Linux. Он не действует на Android, iOS и Web.