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.

Control

Успадковує: CanvasItem < Node < Object

Успадковано від: BaseButton, ColorRect, Container, GraphEdit, ItemList, Label, LineEdit, MenuBar, NinePatchRect, Panel, Range, ReferenceRect, RichTextLabel, Separator, TabBar, TextEdit, TextureRect, Tree, VideoStreamPlayer, VirtualJoystick

Базовий клас для всіх елементів керування 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 змінюють зовнішній вигляд елемента керування. Тема вузла 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_maximum_size

Vector2(-1, -1)

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

bool

offset_transform_enabled

false

Vector2

offset_transform_pivot

Vector2(0, 0)

Vector2

offset_transform_pivot_ratio

Vector2(0.5, 0.5)

Vector2

offset_transform_position

Vector2(0, 0)

Vector2

offset_transform_position_ratio

Vector2(0, 0)

float

offset_transform_rotation

0.0

Vector2

offset_transform_scale

Vector2(1, 1)

bool

offset_transform_visual_only

true

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)

bool

propagate_maximum_size

false

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

""

StringName

translation_context

&""

Методи

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

int

_get_cursor_shape(at_position: Vector2) virtual const

Variant

_get_drag_data(at_position: Vector2) virtual

Vector2

_get_maximum_size() virtual const

Vector2

_get_minimum_size() virtual const

String

_get_tooltip(at_position: Vector2) virtual const

AutoTranslateMode

_get_tooltip_auto_translate_mode_at(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_bound_minimum_size() const

Vector2

get_combined_maximum_size() const

Vector2

get_combined_minimum_size() const

Vector2

get_combined_pivot_offset() const

CursorShape

get_cursor_shape(at_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_maximum_size() 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_maximum_size()

void

update_minimum_size()

void

warp_mouse(position: Vector2)


Сигнали

focus_entered() 🔗

Увімкніть, коли вузол отримує фокус.


focus_exited() 🔗

Увімкніть, коли вузол втрачає фокус.


gui_input(event: InputEvent) 🔗

Увімкнути, коли вершина отримує InputEvent.


maximum_size_changed() 🔗

Emitted when the node's maximum size changes.


minimum_size_changed() 🔗

Випробувано при мінімальних змінах розміру вузла.


mouse_entered() 🔗

Після того, як курсор мишки надходить в видиму зону контролю (або будь-який контроль дитини), яка не входить до інших Controls або Windows, надавалася його mouse_filter дозволяє досягнути події і незалежно від того, чи зараз він зосередився або ні.

Note: CanvasItem.z_index не впливає, що контроль отримує сигнал.


mouse_exited() 🔗

Якщо курсор миша залишає за собою видиму зону контролю (і всі функції контролю дитини), яка не входить до інших контрольних пристроїв або Windows, надавалася його mouse_filter дозволяє досягнути події і незалежно від того, чи зараз вона зосереджена або ні.

Примітка: CanvasItem.z_index не впливає, що контроль отримує сигнал.

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

func _on_mouse_exited():
if no 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-beam мишки, коли користувач вішає вузол. І-бемовий тостер має форму схожу на "І". Він розповідає про користувача, які вони можуть виділити або вставляти текст.

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

Показати курсор мишки системи, коли користувач захопить вузол. На 90-градусний кут показує 2 двоголових стрілок. Він говорить користувача, що він може вільно переміщати елемент UI.

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.

Note: Налаштування цього прапора дорівнює не маючи ніяких прапорів розмірів.

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

Повідомляє батьківщину Контейнер до центру вершини в доступному просторі. Це взаємовиключно з 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 🔗

У разі, коли курсор мишки надходить у видиму зону контролю (або будь-який контроль дитини), що не входить до інших контрольних пристроїв або Windows, наданий його mouse_filter дозволяє досягнути події і незалежно від того, чи зараз він зосередився або ні.

Примітка: CanvasItem.z_index не впливає на який контроль отримує повідомлення.

Дивитися також NOTIFICATION_MOUSE_ENTER_SELF.

NOTIFICATION_MOUSE_EXIT = 42 🔗

Якщо курсор мишей залишає за собою видиму площу контрольного контролю (і всіх контрольних) дитини, яка не входить до інших контрольних систем або Windows, надавалася його 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.

Якщо курсор мишки надходить на видиму площу, яка не входить до інших елементів керування або Windows, надавалася її mouse_filter дозволяє досягнути події і незалежно від того, чи вона зараз зосереджена або ні.

Примітка: CanvasItem.z_index не впливає на який контроль отримує повідомлення.

Дивитися також NOTIFICATION_MOUSE_ENTER.

NOTIFICATION_MOUSE_EXIT_SELF = 61 🔗

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

Якщо курсор мишей залишає видиму площу, яка не входить до інших елементів керування або Windows, наданий її mouse_filter дозволяє досягнути події і незалежно від того, чи зараз він зосередився або ні.

Примітка: CanvasItem.z_index не впливає на який контроль отримує повідомлення.

Дивитися також NOTIFICATION_MOUSE_EXIT.

NOTIFICATION_FOCUS_ENTER = 43 🔗

Увімкніть, коли вузол захоплюється.

NOTIFICATION_FOCUS_EXIT = 44 🔗

Надсилається, коли вузол втрачає фокус.

Це сповіщення надсилається у зворотному порядку.

NOTIFICATION_THEME_CHANGED = 45 🔗

Увімкніть, коли вершина повинна освіжити її предметами. Це відбувається в одному з наступних випадків:

  • На цій вершині змінена тема theme.

  • На цій вершині змінено авторську тема_type_variation.

до Змінилося одне з темних об’єктів вершини.

до Вуз входить дерево сцени.

Примітка: Як оптимізація, це повідомлення не буде відправлено з змін, які відбуваються в той час як це вершина зовні сцени. Замість, всі оновлення теми можна застосувати відразу, коли вершина надходить на дерево сцени.

Примітка: Це повідомлення надійшло поряд з Node. НЕІФІКАЦІЯ_ENTER_TREE, тому якщо ви миттєво розмовляєте сцену, дочірні вузли ще не будуть ініціовані. Ви можете використовувати його, щоб налаштувати їх для цього вузла, дочірні вершини, створені з сценарію, або якщо ви хочете отримати доступ до дочірніх вузлів, доданих в редакторі, переконайтеся, що вузол готовий використовувати Node.is_node_ready().

func _notification(what):
if what == NOTIFICATION_THEME_CHANGED!
if no is_node_ready():
await ready # Очікується до готовності сигналу.
$Label.add_theme_color_override("font_color, Color.YELLOW)

NOTIFICATION_SCROLL_BEGIN = 47 🔗

При цьому, коли цей вузол знаходиться всередині ScrollContainer, який почав прокручуватися, коли перетягування прокрученої площі * з сенсорною подією . Це повідомлення *not надіслане при прокручуванні за допомогою прокрутки, прокручування за допомогою миші або прокручування за допомогою клавіатури / грипаду подій.

Примітка: Цей сигнал випромінюється лише на Android або iOS, або на настільних/веб-платформах, коли ввімкнено ProjectSettings.input_devices/pointing/emulate_touch_from_mouse.

NOTIFICATION_SCROLL_END = 48 🔗

При цьому, коли цей вузол знаходиться всередині ScrollContainer, який припинив прокручування під час перетягування прокрученої зони * з сенсорною подією . Це повідомлення *not надіслане при прокручуванні за допомогою прокрутки, прокручування за допомогою миші або прокручування за допомогою клавіатури / грипаду подій.

Примітка: Цей сигнал використовується тільки на Android або iOS, або на настільних / веб-платформах, коли ProjectSettings.input_devices/pointing/emulate_touch_from_mouse.

NOTIFICATION_LAYOUT_DIRECTION_CHANGED = 49 🔗

Надсилається, коли напрямок макета елементів керування змінюється з LTR або RTL або навпаки. Це сповіщення поширюється на дочірні вузли керування в результаті зміни в layout_direction.


Описи властивостей

Array[NodePath] accessibility_controls_nodes = [] 🔗

  • void set_accessibility_controls_nodes(value: Array[NodePath])

  • Array[NodePath] get_accessibility_controls_nodes()

Шляхи до вузлів, якими керує цей вузол.


Array[NodePath] accessibility_described_by_nodes = [] 🔗

  • void set_accessibility_described_by_nodes(value: Array[NodePath])

  • Array[NodePath] get_accessibility_described_by_nodes()

Шляхи до вузлів, що описують цей вузол.


String accessibility_description = "" 🔗

  • void set_accessibility_description(value: String)

  • String get_accessibility_description()

Опис вузла, який може читати людина, і який повідомляється допоміжним програмам.


Array[NodePath] accessibility_flow_to_nodes = [] 🔗

  • void set_accessibility_flow_to_nodes(value: Array[NodePath])

  • Array[NodePath] get_accessibility_flow_to_nodes()

Шляхи до вузлів, у які впадає цей вузол.


Array[NodePath] accessibility_labeled_by_nodes = [] 🔗

  • void set_accessibility_labeled_by_nodes(value: Array[NodePath])

  • Array[NodePath] get_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_maximum_size = Vector2(-1, -1) 🔗

  • void set_custom_maximum_size(value: Vector2)

  • Vector2 get_custom_maximum_size()

The maximum size of this Control's bounding rectangle. If set to a value greater than or equal to (0, 0), the node's bounding rectangle will never exceed this size. A value below (0, 0) means there is no maximum size.

Note: The final effective maximum size may be subject to parent Container sizing and propagated maximum sizes. See also: get_combined_maximum_size().

Note: Not all Control subtypes handle a custom maximum size gracefully, which may lead to unexpected behavior if the control's contents exceed this size.

Note: This value has priority over custom_minimum_size. For example, if you set custom_maximum_size to (100, 100) and custom_minimum_size to (200, 200), the resulting size will be (100, 100).

Note: It is recommended to use get_bound_minimum_size() instead of get_combined_minimum_size() when using this property, as the former respects maximum size limits when calculating the minimum size, while the latter does not.


Vector2 custom_minimum_size = Vector2(0, 0) 🔗

  • void set_custom_minimum_size(value: Vector2)

  • Vector2 get_custom_minimum_size()

The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size. Note that Control nodes have their internal minimum size returned by get_minimum_size(). It depends on the control's contents, like text, textures, or style boxes. The actual minimum size is the maximum value of this property and the internal minimum size (see get_combined_minimum_size()).

Note: custom_maximum_size has priority over this property. For example, if you set custom_minimum_size to (200, 200) and custom_maximum_size to (100, 100), the resulting size will be (100, 100).


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("") 🔗

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

  • NodePath get_focus_neighbor(side: Side) const

Вказує Godot, на який вузол слід перевести фокус, якщо користувач натискає стрілку вниз на клавіатурі або на геймпаді за замовчуванням. Ви можете змінити клавішу, відредагувавши дію введення ProjectSettings.input/ui_down. Вузол має бути Control. Якщо цю властивість не встановлено, Godot сфокусує увагу на найближчому до нього Control знизу.


NodePath focus_neighbor_left = NodePath("") 🔗

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

  • NodePath get_focus_neighbor(side: Side) const

Вказує Godot, на який вузол слід перевести фокус, якщо користувач натискає стрілку вліво на клавіатурі або вліво на ґеймпаді за замовчуванням. Ви можете змінити клавішу, відредагувавши дію введення ProjectSettings.input/ui_left. Вузол має бути Control. Якщо цю властивість не встановлено, Godot сфокусує фокус на найближчому Control ліворуч від цього.


NodePath focus_neighbor_right = NodePath("") 🔗

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

  • NodePath get_focus_neighbor(side: Side) const

Вказує Godot, на який вузол слід перевести фокус, якщо користувач натискає стрілку праворуч на клавіатурі або праворуч на ґеймпаді за замовчуванням. Ви можете змінити клавішу, відредагувавши дію введення ProjectSettings.input/ui_right. Вузол має бути Control. Якщо цю властивість не встановлено, Godot сфокусує увагу на найближчому елементі керування праворуч від нього.


NodePath focus_neighbor_top = NodePath("") 🔗

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

  • NodePath get_focus_neighbor(side: Side) const

За замовчуванням вказує Godot, на який вузол слід перевести фокус, якщо користувач натискає стрілку вгору на клавіатурі або вгору на ґеймпаді. Ви можете змінити клавішу, відредагувавши дію введення ProjectSettings.input/ui_up. Вузол має бути Control. Якщо цю властивість не встановлено, Godot сфокусує увагу на найближчому до нього Control.


NodePath focus_next = NodePath("") 🔗

  • void set_focus_next(value: NodePath)

  • NodePath get_focus_next()

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

Якщо цю властивість не встановлено, Godot вибере "найкраще припущення" на основі навколишніх вузлів у дереві сцени.


NodePath focus_previous = NodePath("") 🔗

  • void set_focus_previous(value: NodePath)

  • NodePath get_focus_previous()

Вказує Godot, до якого вузла слід перевести фокус, якщо користувач за замовчуванням натискає Shift + Tab на клавіатурі. Ви можете змінити клавішу, відредагувавши дію введення ProjectSettings.input/ui_focus_prev.

Якщо цю властивість не встановлено, Godot вибере "найкраще припущення" на основі навколишніх вузлів у дереві сцени.


Vector2 global_position 🔗

  • Vector2 get_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) до систем, що використовуються в поточному локальному режимі.

Note: Кількість в тексті не автоматично перетворюються, це можна зробити вручну, використовуючи ТекстServer.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. Зміщення оновлюються автоматично, коли ви переміщуєте або змінюєте розмір вузла.


bool offset_transform_enabled = false 🔗

  • void set_offset_transform_enabled(value: bool)

  • bool is_offset_transform_enabled()

If true, applies all offset transform properties. Otherwise, no offset transform is applied and the properties have no effect.


Vector2 offset_transform_pivot = Vector2(0, 0) 🔗

  • void set_offset_transform_pivot(value: Vector2)

  • Vector2 get_offset_transform_pivot()

Pivot used by offset_transform_rotation and offset_transform_scale in absolute units.

The final pivot position is the combined value of this property and offset_transform_pivot_ratio.

Has no effect unless offset_transform_enabled is true.


Vector2 offset_transform_pivot_ratio = Vector2(0.5, 0.5) 🔗

  • void set_offset_transform_pivot_ratio(value: Vector2)

  • Vector2 get_offset_transform_pivot_ratio()

Same as offset_transform_pivot but expressed in units relative to the Control size where Vector2(0, 0) is the top-left corner of this control, and Vector2(1, 1) is its bottom-right corner.

The final pivot position is the combined value of this property and offset_transform_pivot.

Has no effect unless offset_transform_enabled is true.


Vector2 offset_transform_position = Vector2(0, 0) 🔗

  • void set_offset_transform_position(value: Vector2)

  • Vector2 get_offset_transform_position()

Position offset in absolute units. The final offset is the combined value of this property and offset_transform_position_ratio.

Has no effect unless offset_transform_enabled is true.


Vector2 offset_transform_position_ratio = Vector2(0, 0) 🔗

  • void set_offset_transform_position_ratio(value: Vector2)

  • Vector2 get_offset_transform_position_ratio()

Same as offset_transform_position but expressed in units relative to the Control size where Vector2(0, 0) is the top-left corner of this control, and Vector2(1, 1) is its bottom-right corner.

The final offset is the combined value of this property and offset_transform_position.

Has no effect unless offset_transform_enabled is true.


float offset_transform_rotation = 0.0 🔗

  • void set_offset_transform_rotation(value: float)

  • float get_offset_transform_rotation()

Rotation offset. The rotation pivot is defined by offset_transform_pivot and offset_transform_pivot_ratio.

Has no effect unless offset_transform_enabled is true.


Vector2 offset_transform_scale = Vector2(1, 1) 🔗

  • void set_offset_transform_scale(value: Vector2)

  • Vector2 get_offset_transform_scale()

Scale offset. The scale pivot is defined by offset_transform_pivot and offset_transform_pivot_ratio.

Has no effect unless offset_transform_enabled is true.


bool offset_transform_visual_only = true 🔗

  • void set_offset_transform_visual_only(value: bool)

  • bool is_offset_transform_visual_only()

If true, the offset transforms is only applied visually and does not affect input. In other words, this Control will still receive input events at its original location before the offset transform is applied.

If false, the entire transform of this Control is affected and input events will register where the Control is visually.

Has no effect unless offset_transform_enabled is true.


Vector2 pivot_offset = Vector2(0, 0) 🔗

  • void set_pivot_offset(value: Vector2)

  • Vector2 get_pivot_offset()

За замовчуванням, опорною точкою вузла є його верхній лівий кут. Коли ви змінюєте його 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) 🔗

  • Vector2 get_position()

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


bool propagate_maximum_size = false 🔗

  • void set_propagate_maximum_size(value: bool)

  • bool is_propagating_maximum_size()

If true, this Control's children will use the value returned by get_combined_maximum_size() in their own size calculations.


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) 🔗

  • void set_scale(value: Vector2)

  • Vector2 get_scale()

Масштаб вузла відносно його size. Змініть цю властивість, щоб масштабувати вузол навколо його pivot_offset. Підказка елемента керування також масштабуватиметься відповідно до цього значення.

Примітка: Ця властивість призначена головним чином для використання в анімації. Щоб підтримувати кілька роздільних здатностей у вашому проекті, використовуйте відповідний режим розтягування області перегляду, як описано в документації, замість масштабування елементів керування окремо. Примітка: FontFile.oversampling не враховує масштаб елемента керування Control scale.

Це означає, що масштабування вгору/вниз призведе до розмиття або пікселізації растрових шрифтів та растеризованих (не MSDF) динамічних шрифтів. Щоб забезпечити чіткість тексту незалежно від масштабу, ви можете ввімкнути рендеринг шрифтів MSDF, увімкнувши ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (стосується лише шрифту проекту за замовчуванням) або ввімкнувши Поле відстані зі знаком Multichannel у параметрах імпорту 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) 🔗

  • Vector2 get_size()

Розмір вузла, що межує прямокутника, в координатній системі вершини. Container вершини автоматично оновлювати цю властивість.


BitField[SizeFlags] size_flags_horizontal = 1 🔗

  • void set_h_size_flags(value: BitField[SizeFlags])

  • BitField[SizeFlags] get_h_size_flags()

Розкажіть, як вони повинні змінити розмір і розмістити вузол на осі 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()

Розкажіть, як вони повинні змінити розмір і розмістити вузол на осі Y. Використовуйте комбінацію констанцій SizeFlags для зміни прапорів. Дізнайтеся, що кожен робить.


Theme theme 🔗

  • void set_theme(value: Theme)

  • Theme get_theme()

Theme ресурс цієї вершини і всі її Control і Window діти використовують. Якщо дочірня вершина має власний ресурс Theme, тематичні елементи об'єднуються з визначеннями дитини, які мають вищий пріоритет.

Примітка: Window стилі не матимуть ефекту, якщо вікно вкладено.


StringName theme_type_variation = &"" 🔗

  • void set_theme_type_variation(value: StringName)

  • StringName get_theme_type_variation()

Назва варіації типу теми, що використовується цим Елементом керування для пошуку власних елементів теми. Якщо значення порожнє, використовується назва класу вузла (наприклад, Button для елемента керування Button), а також назви класів усіх батьківських класів (у порядку успадкування).

Якщо встановлено, ця властивість надає найвищий пріоритет типу з вказаним іменем. Цей тип, у свою чергу, може розширювати інший тип, утворюючи ланцюжок залежностей. Дивіться Theme.set_type_variation(). Якщо елемент теми не може бути знайдений за допомогою цього типу або його базових типів, пошук повертається до імен класів.

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

Примітка: Елементи теми шукаються у порядку дерева, від гілки до кореня, де кожен вузол Control перевіряється на наявність властивості theme. Повертається найперший збіг з будь-яким типом/класом. Тема рівня проекту та тема за замовчуванням перевіряються в останню чергу.


AutoTranslateMode tooltip_auto_translate_mode = 0 🔗

  • void set_tooltip_auto_translate_mode(value: AutoTranslateMode)

  • AutoTranslateMode get_tooltip_auto_translate_mode()

Визначає, чи слід автоматично змінювати текст підказки на її перекладену версію залежно від поточної локалі. Використовує той самий режим автоматичного перекладу, що і цей елемент керування, коли встановлено у 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. Час, необхідний для показу підказки, можна змінити за допомогою параметра PojectSettings.gui/timers/tooltip_delay_sec.

Цей рядок є типовим значенням, яке повертає get_tooltip(). Перевизначити _get_tooltip() для динамічного генерування тексту підказки. Викличте _make_custom_tooltip(), щоб налаштувати інтерфейс і поведінку підказки.

У спливаючій підказці використовуватиметься або стандартна реалізація, або кастомна, яку ви можете надати за допомогою перевизначення _make_custom_tooltip(). Типова підказка method 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))

StringName translation_context = &"" 🔗

  • void set_translation_context(value: StringName)

  • StringName get_translation_context()

The translation context used when translating this control's displayed text, if it has any. Also used when generating translation templates.


Описи методів

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, і як позицію перетягування слід використовувати поточну позицію вибраного елемента/тексту.

[gdscript]
func _can_drop_data(position, data):
return typeof(data) == TYPE_DICTIONARY та data.has("color")

func _drop_data(position, data):
var color = data["color"]
[/gdscript]
[csharp]
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
return data.VariantType == Variant.Type.Dictionary && data.AsGodotDictionary().ContainsKey("color");
}

public override void _DropData(Vector2 atPosition, Variant data)
{
Color color = data.AsGodotDictionary()["color"].AsColor();
}
[/csharp]
[/блоки коду]

String _get_accessibility_container_name(node: Node) virtual const 🔗

Перевизначте цей метод, щоб повернути зрозумілий для людини опис позиції дочірнього вузла node у користувацькому контейнері, доданого до accessibility_name.


int _get_cursor_shape(at_position: Vector2) virtual const 🔗

Virtual method to be implemented by the user. Returns the cursor shape for the position at_position in the control's local coordinates, which will typically be used while hovering over this control. See get_cursor_shape().

If not overridden, defaults to mouse_default_cursor_shape.


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_maximum_size() virtual const 🔗

Virtual method to be implemented by the user. Returns the maximum size for this control. Alternative to custom_maximum_size for controlling maximum size via code. The actual maximum size will be the max value of these two (in each axis separately).

If not overridden, defaults to Vector2.ZERO.

Note: This method will not be called when the script is attached to a Control node that already overrides its maximum size (e.g. ScrollContainer).

Note: It is recommended to use get_bound_minimum_size() instead of get_combined_minimum_size() when implementing this method, as the former respects maximum size limits when calculating the minimum size, while the latter does not.


Vector2 _get_minimum_size() virtual const 🔗

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

Якщо не перевизначено, за замовчуванням дорівнює Vector2.ZERO.

Примітка: Цей метод не буде викликано, якщо скрипт приєднано до вузла Control, який вже перевизначив його мінімальний розмір (наприклад, Label, Button, PanelContainer тощо). Він може бути використаний лише з найпростішими вузлами графічного інтерфейсу, такими як Control, Container, Panel тощо.


String _get_tooltip(at_position: Vector2) virtual const 🔗

Virtual method to be implemented by the user. Returns the tooltip text for the position at_position in the control's local coordinates, which will typically appear when the cursor is resting over this control. See get_tooltip().

Note: If this method returns an empty String and _make_custom_tooltip() is not overridden, no tooltip is displayed.


AutoTranslateMode _get_tooltip_auto_translate_mode_at(at_position: Vector2) virtual const 🔗

Return the auto-translation mode at the given at_position. If not implemented, the tooltip_auto_translate_mode property will be used instead.


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:")

Подія не спрацює, якщо

* клацання за межами елемента керування (див. _has_point());

* елемент керування має mouse_filter, встановлений у MOUSE_FILTER_IGNORE;

* елемент керування перекрито іншим Control, який знаходиться над ним, але не має mouse_filter, встановленого на MOUSE_FILTER_IGNORE;

* батьківський елемент управління має mouse_filter встановлений у MOUSE_FILTER_STOP або прийняв подію;

* це відбувається за межами батьківського прямокутника і у батька увімкнено clip_contents.

Примітка:4 Позиція події відносно початку керування.


bool _has_point(point: Vector2) virtual const 🔗

Virtual method to be implemented by the user. Returns whether the given point is inside this control.

If not overridden, default behavior is checking if the point is within the control's Rect.

Note: If you want to check if a point is inside the control, you can use 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 і скиньте його пізніше:

# Маючи дочірній вузол мітки "MyLabel", замінимо його колір шрифту новим значенням.
$MyLabel.add_theme_color_override("font_color", Color(1, 0,5, 0))
# Скинемо колір шрифту дочірньої мітки.
$MyLabel.remove_theme_color_override("font_color")
# Крім того, його можна замінити значенням за замовчуванням із типу Label.
$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. Місцеві перевизнання завжди мають прецедентність при обманці темних елементів для контролю. Видалено перевипуск з видалення_theme_font_override().

Дивитися також get_theme_font().


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

Створює локальну накладну для розміру шрифту теми з вказаною прізвище. Місцеві перевизнання завжди мають прецедентність при обманці темних елементів для контролю. Видалено перевипуск з видалення_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)
 # Видаліть перевизначення поля стилів.
$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() 🔗

Закінчується масове оновлення теми. Переглянути _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_bound_minimum_size() const 🔗

Returns the bound value of get_combined_minimum_size() by get_combined_maximum_size().

This value is the true minimum size of the container, as the maximum size has priority over the minimum size.

For example, if the combined minimum size is (100, 100) and the combined maximum size is (50, 150), the bound minimum size will be (50, 100).


Vector2 get_combined_maximum_size() const 🔗

Returns the combined maximum size from custom_maximum_size and get_maximum_size(), as well as the custom_maximum_size of this node's parent if it is a Control node with propagate_maximum_size set to true.


Vector2 get_combined_minimum_size() const 🔗

Returns the combined minimum size from custom_minimum_size and get_minimum_size().


Vector2 get_combined_pivot_offset() const 🔗

Повертає сумарне значення pivot_offset та pivot_offset_ratio у пікселях. Співвідношення множиться на розмір елемента керування.


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

Returns the mouse cursor shape for this control when hovered over at_position in local coordinates. For most controls, this is the same as mouse_default_cursor_shape, but some built-in controls implement more complex logic.

You can override _get_cursor_shape() to implement custom behavior for this method.


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.

Примітка: Щоб знайти наступний елемент керування на певній стороні Side, навіть якщо не призначено сусіда, використовуйте find_valid_focus_neighbor().


Rect2 get_global_rect() const 🔗

Повертає позицію та розмір елемента керування відносно полотна, що його містить. Дивіться global_position та size.

Примітка: Якщо сам вузол або будь-який батьківський елемент CanvasItem між вузлом і полотном має нетипове обертання або нахил, отриманий розмір, ймовірно, не матиме сенсу.

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


Vector2 get_maximum_size() const 🔗

Returns the maximum size for this control. See custom_maximum_size.


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.

Примітка: Якщо обертання елемента не є обертанням за замовчуванням, отриманий розмір не має сенсу.

Примітка: Встановлення значення 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 має дійсне значення email protected.

Подивитися get_theme_color() для деталей.


int get_theme_default_font_size() const 🔗

Повертає значення розміру шрифту за замовчуванням з першого узгодження Theme у дерево, якщо це Theme має дійсне значення email protected.

Подивитися get_theme_color() для деталей.


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

Повертаємо Font з першого узгодження Theme в дерево, якщо це Theme має шрифтовий елемент з вказаною name і theme_type.

Подивитися 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 має стильний елемент з вказаною name та theme_type.

Подивитися get_theme_color() для деталей.


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

Returns the tooltip text for the position at_position in the control's local coordinates, which will typically appear when the cursor is resting over this control. By default, it returns tooltip_text.

You can override _get_tooltip() to implement custom behavior for this method.

Note: If this method returns an empty String and _make_custom_tooltip() is not overridden, no tooltip is displayed.


void grab_click_focus() 🔗

Створює InputEventMouseButton, який намагається клацнути елемент керування. Якщо подію отримано, елемент керування отримує фокус.

func _process(delta):
     grab_click_focus() # При клацанні іншого вузла керування, цей вузол буде натиснутий.

void grab_focus(hide_focus: bool = false) 🔗

Steal the focus from another control and become the focused control (see focus_mode).

If hide_focus is true, the control will not visually show its focused state. Has no effect for LineEdit and TextEdit when ProjectSettings.gui/common/show_focus_state_on_pointer_event is set to Text Input Controls, or for any control when it is set to Always.

Note: Using this method together with Callable.call_deferred() makes it more reliable, especially when called inside 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 of param, попередньо доданим методом add_theme_font_override або через панель інспектора.


void remove_theme_font_size_override(name: StringName) 🔗

Вилучає локальну накладку для розміру шрифту тема з вказаною name, додана add_theme_font_size_override() або через Inspector dock.


void remove_theme_icon_override(name: StringName) 🔗

Видаліть локальну наречену на значок теми з вказаною name, попередньо доданий add_theme_icon_override() або через Inspector dock.


void remove_theme_stylebox_override(name: StringName) 🔗

Вилучає локальну наречену на тему StyleBox з вказаною name раніше додано add_theme_stylebox_override() або через Inspector dock.


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) 🔗

Комплекти як якірна заміщення, так і зміщенням. Див. набір_anchors_preset() та набір_offsets_preset().


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

Встановлює якорі до preset з перелічення LayoutPreset. Цей код еквівалентний використанню меню 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) 🔗

Вказує, що вказані викликувані елементи будуть використовуватися замість власних віртуальних методів перетягування елемента керування. Якщо викликуваний елемент є порожнім, його відповідний віртуальний метод буде використано як звичайно.

Аргументи для кожного виклику мають бути точно такими ж, як і для відповідних віртуальних методів, а саме

  • drag_func відповідає _get_drag_data() і вимагає Vector2;

  • can_drop_func відповідає _can_drop_data() і вимагає як Vector2, так і Variant;

  • drop_func відповідає _drop_data() і вимагає як Vector2, так і Variant.


void set_drag_preview(control: Control) 🔗

Показує заданий елемент керування за вказівником миші. Сприятливий час для виклику цього методу в _get_drag_data(). Елемент керування не має бути в дереві сцени. Ви не повинні звільняти елемент керування та не повинні зберігати посилання на елемент керування після закінчення перетягування. Його буде видалено автоматично після завершення перетягування.

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

func _get_drag_data(позиція):
    # Використовуйте елемент керування, якого немає в дереві
    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_maximum_size() 🔗

Invalidates the maximum size cache in this node and in parent nodes up to top level. Intended to be used with get_maximum_size() when the return value is changed. Setting custom_maximum_size directly calls this method automatically.

Note: Calling this method also calls update_minimum_size() since the combined minimum size may be affected by the maximum size change.


void update_minimum_size() 🔗

Invalidates the minimum size cache in this node and in parent nodes up to top level. Intended to be used with get_minimum_size() when the return value is changed. Setting custom_minimum_size directly calls this method automatically.


void warp_mouse(position: Vector2) 🔗

Переміщує курсор миші на позицію параметра відносно position цього Control.

Примітка: warp_mouse() підтримується лише у Windows, macOS та Linux. Він не впливає на Android, iOS та Web.