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 відповідає за розповсюдження InputEvents до своїх дочірніх вузлів. Оскільки SceneTree.root є вікном, це вже відбувається автоматично для всіх елементів інтерфейсу користувача у вашій грі.
Події введення поширюються через SceneTree від кореневого вузла до всіх дочірніх вузлів шляхом виклику Node._input(). Зокрема, для елементів інтерфейсу користувача має більше сенсу перевизначити віртуальний метод _gui_input(), який відфільтровує непов’язані події введення, наприклад, перевіряючи z-порядок, mouse_filter, фокус або якщо подія була всередині обмежувальної рамки елемента керування.
Викличте accept_event(), щоб жоден інший вузол не отримав подію. Коли ви приймаєте введення, воно стає обробленим, тому Node._unhandled_input() не оброблятиме його.
У фокусі може бути лише один вузол 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, надані цим класом.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
physics_interpolation_mode |
|
|
|
||
|
||
|
||
|
||
|
||
BitField[SizeFlags] |
|
|
|
||
BitField[SizeFlags] |
|
|
|
||
|
||
|
Методи
Сигнали
focus_entered() 🔗
Увімкніть, коли вузол отримує фокус.
focus_exited() 🔗
Увімкніть, коли вузол втрачає фокус.
gui_input(event: InputEvent) 🔗
Увімкнути, коли вершина отримує InputEvent.
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 = [] 🔗
Шляхи до вузлів, якими керує цей вузол.
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 🔗
void set_accessibility_live(value: AccessibilityLiveMode)
AccessibilityLiveMode get_accessibility_live()
Режим оновлення активного регіону. Активний регіон – це Node, який оновлюється в результаті зовнішньої події, коли фокус користувача може бути в іншому місці.
String accessibility_name = "" 🔗
Зрозуміле для людини ім'я вузла, яке повідомляється допоміжним програмам.
Анколює нижній край вузла до походження, центр або кінець його батьківського контролю. Він змінює, як оновлення нижнього зсуву при переході вершини або розмір змін. Ви можете використовувати одну з констанцій Anchor для зручності.
Анколює лівий край вузла до походження, центр або кінець його батьківського контролю. Зміни, як лівий зсув оновлення, коли вершина рухається або розмір змін. Ви можете використовувати одну з констанцій Anchor для зручності.
Анкери правого краю вузла до походження, центру або закінчення його батьківського контролю. Він змінює, як правильно зміщувати оновлення, коли вузол рухається або змінює розмір. Ви можете використовувати одну з констанцій Anchor для зручності.
Анколює верхній край вершини до походження, центру або закінчення його батьківського контролю. Він змінює, як оновлення верхнього зсуву, коли вершина рухається або розмір змін. Ви можете використовувати одну з констанцій Anchor для зручності.
Застаріло: Use Node.auto_translate_mode and Node.can_auto_translate() instead.
Якщо будь-який текст повинен автоматично змінюватися до його перекладу в залежності від поточного локального.
Увімкнено, чи має бути надана дитяча фігура CanvasItem. Якщо true, частини дитини, яка буде помітно зовні цього прямокутника, не буде продаватися і не буде отримувати вхід.
Vector2 custom_minimum_size = Vector2(0, 0) 🔗
Мінімальний розмір прямокутника вузла. Якщо ви встановите його до значення більше, ніж (0, 0), то вузол, що межує прямокутник, завжди має принаймні цей розмір. Зверніть увагу, що Control вершини мають свій внутрішній мінімальний розмір, що подається get_minimum_size(). Він залежить від вмісту управління, таких як текст, текстури або ящики стилю. Максимальний розмір нерухомості – це максимальне значення цього майна та внутрішній мінімальний розмір (див. get_combined_minimum_size()).
FocusBehaviorRecursive focus_behavior_recursive = 0 🔗
void set_focus_behavior_recursive(value: FocusBehaviorRecursive)
FocusBehaviorRecursive get_focus_behavior_recursive()
Визначає, які елементи керування можуть бути сфокусовані разом з focus_mode. Див. get_focus_mode_with_override(). Оскільки поведінка за замовчуванням — FOCUS_BEHAVIOR_INHERITED, це можна використовувати для запобігання фокусуванню всіх дочірніх елементів керування.
Визначає, які елементи керування можуть бути сфокусовані. Одночасно може бути сфокусований лише один елемент керування, і сфокусований елемент керування отримуватиме події клавіатури, геймпада та миші в _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 сфокусує увагу на найближчому елементі керування праворуч від нього.
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 get_global_position()
Всесвітня позиція вершини, відносно світу (зазвичай до CanvasLayer).
GrowDirection grow_horizontal = 1 🔗
void set_h_grow_direction(value: GrowDirection)
GrowDirection get_h_grow_direction()
Контролює напрямок на горизонтальну вісь, в якій контроль повинен рости, якщо його горизонтальний мінімальний розмір змінений, ніж його поточний розмір, так як контроль завжди повинен бути не менше мінімального розміру.
GrowDirection grow_vertical = 1 🔗
void set_v_grow_direction(value: GrowDirection)
GrowDirection get_v_grow_direction()
Контролює напрямок на вертикальну віссю, в якій контроль повинен рости, якщо його вертикальний мінімальний розмір змінюється, ніж його поточний розмір, так як контроль завжди повинен бути не менше мінімального розміру.
LayoutDirection layout_direction = 0 🔗
void set_layout_direction(value: LayoutDirection)
LayoutDirection get_layout_direction()
Контролює напрямок макета та напрямок написання тексту. Розкладка справа наліво необхідна для певних мов (наприклад, арабської та івриту). Дивіться також is_layout_rtl().
bool localize_numeral_system = true 🔗
Якщо true, автоматично перетворює кодові рядки, список індексів, SpinBox та ProgressBar значення з Західної Арабської (0.9) до систем, що використовуються в поточному локальному режимі.
Note: Кількість в тексті не автоматично перетворюються, це можна зробити вручну, використовуючи ТекстServer.format_number().
MouseBehaviorRecursive mouse_behavior_recursive = 0 🔗
void set_mouse_behavior_recursive(value: MouseBehaviorRecursive)
MouseBehaviorRecursive get_mouse_behavior_recursive()
Визначає, які елементи керування можуть отримувати введення миші разом із mouse_filter. Див. get_mouse_filter_with_override(). Оскільки поведінка за замовчуванням — MOUSE_BEHAVIOR_INHERITED, це можна використовувати, щоб запобігти отриманню введення миші всіма дочірніми елементами керування.
CursorShape mouse_default_cursor_shape = 0 🔗
void set_default_cursor_shape(value: CursorShape)
CursorShape get_default_cursor_shape()
Форма курсора за замовчуванням для цього керування. Корисно для Godot плагінів і додатків або ігор, які використовують курсори мишки системи.
Примітка: На Linux форми можуть відрізнятися залежно від теми курсора системи.
MouseFilter mouse_filter = 0 🔗
void set_mouse_filter(value: MouseFilter)
MouseFilter get_mouse_filter()
Визначає, які елементи керування зможуть отримувати події введення даних від кнопки миші через _gui_input() та сигнали mouse_entered і mouse_exited. Також визначає, як ці події повинні поширюватися. Дивіться константи, щоб дізнатися, що робить кожна з них. Використовуйте get_mouse_filter_with_override(), щоб визначити, чи може елемент керування отримувати введення даних від миші, оскільки mouse_behavior_recursive також впливає на це.
bool mouse_force_pass_scroll_events = true 🔗
Якщо ввімкнено, події колеса прокручування, оброблені _gui_input(), будуть передані до батьківського контролю, навіть якщо для параметра mouse_filter встановлено значення MOUSE_FILTER_STOP.
Вам слід вимкнути його в корені вашого інтерфейсу користувача, якщо ви не хочете, щоб події прокручування переходили до обробки Node._unhandled_input().
Примітка: Оскільки ця властивість за умовчанням має значення true, це дозволяє вкладеним прокручувати контейнерам працювати з коробки.
Відстань між нижньою кромкою вершини та її батьківським керуванням, на основі anchor_bottom.
Оффсети часто контролюються одним або кількома материнськими вузлами Container, тому ви не повинні змінювати їх вручну, якщо ваш вузол є безпосередньою дитиною Container. Оновлення вимкнено автоматично при переході або зміні вузла.
Відстань між лівим краєм вузла та його батьківським елементом керування, на основі anchor_left.
Зміщення часто контролюються одним або декількома батьківськими вузлами Container, тому не варто змінювати їх вручну, якщо ваш вузол є прямим нащадком Container. Зміщення оновлюються автоматично, коли ви переміщуєте або змінюєте розмір вузла.
Відстань між правим краєм вузла та його батьківським елементом керування, на основі anchor_right.
Зміщення часто контролюються одним або декількома батьківськими вузлами Container, тому не варто змінювати їх вручну, якщо ваш вузол є прямим нащадком Container. Зміщення оновлюються автоматично, коли ви переміщуєте або змінюєте розмір вузла.
Відстань між верхнім краєм вузла та його батьківським елементом керування, на основі anchor_top.
Зміщення часто контролюються одним або декількома батьківськими вузлами Container, тому не варто змінювати їх вручну, якщо ваш вузол є прямим нащадком Container. Зміщення оновлюються автоматично, коли ви переміщуєте або змінюєте розмір вузла.
Vector2 pivot_offset = Vector2(0, 0) 🔗
За замовчуванням, вершиною вузла є його лівий верхній кут. Коли ви змінюєте значення rotation або scale, він обертатиметься або масштабуватиметься навколо цієї точки. Встановіть для цієї властивості значення size / 2, щоб обертатися навколо центру елемента керування.
Vector2 position = Vector2(0, 0) 🔗
Vector2 get_position()
Положення вузла відносно вузла, що його містить. Воно відповідає верхньому лівому кутку прямокутника. На властивість не впливає pivot_offset.
Обертання вузла навколо точки опори в радіанах. Див. pivot_offset, щоб змінити положення точки опори.
Примітка: Ця властивість редагується в інспекторі в градусах. Якщо ви хочете використовувати градуси в скрипті, використовуйте 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 у параметрах імпорту DynamicFont для користувацьких шрифтів. Для системних шрифтів SystemFont.multichannel_signed_distance_field можна ввімкнути в інспекторі.
Примітка: Якщо вузол Control є дочірнім вузлом Container, масштаб буде скинуто до Vector2(1, 1) під час створення сцени. Щоб встановити масштаб елемента Control під час його створення, зачекайте один кадр за допомогою await get_tree().process_frame, а потім встановіть його властивість scale.
Вузол Node, який має бути батьком фокусованого елемента керування Control, щоб ярлик було активовано. Якщо null, ярлик можна активувати, коли будь-який елемент керування сфокусовано (глобальний ярлик). Це дозволяє приймати ярлики лише тоді, коли користувач зосередив увагу на певній ділянці графічного інтерфейсу.
Vector2 size = Vector2(0, 0) 🔗
Vector2 get_size()
Розмір вузла, що межує прямокутника, в координатній системі вершини. Container вершини автоматично оновлювати цю властивість.
BitField[SizeFlags] size_flags_horizontal = 1 🔗
Розкажіть, як вони повинні змінити розмір і розмістити вузол на осі X. Використовуйте комбінацію констанцій SizeFlags для зміни прапорів. Дізнайтеся, що кожен робить.
float size_flags_stretch_ratio = 1.0 🔗
Якщо вершина і принаймні одна з його сусідів використовує прапор розміром SIZE_EXPAND, батько Container дозволить зайняти більше або менше місця залежно від цього майна. Якщо цей вузол має протяжний коефіцієнт 2 і його сусіда співвідношення 1, цей вузол займе дві третини наявного простору.
BitField[SizeFlags] size_flags_vertical = 1 🔗
Розкажіть, як вони повинні змінити розмір і розмістити вузол на осі Y. Використовуйте комбінацію констанцій SizeFlags для зміни прапорів. Дізнайтеся, що кожен робить.
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(), не використовують цей режим автоматичного перекладу автоматично.
Текст підказки за замовчуванням. Підказка з'являється, коли курсор миші користувача затримується на цьому елементі керування на декілька секунд, за умови, що властивість 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))
var styleBox = new StyleBoxFlat();
styleBox.SetBgColor(new Color(1, 1, 0));
styleBox.SetBorderWidthAll(2);
// Тут ми припускаємо, що властивості `Theme` заздалегідь було присвоєно користувацьку тему.
Theme.SetStyleBox("panel", "TooltipPanel", styleBox);
Theme.SetColor("font_color", "TooltipLabel", new 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")
public override bool _CanDropData(Vector2 atPosition, Variant data)
{
// Перевірте позицію, якщо вона вам релевантна
// В іншому випадку, просто перевірте дані
return data.VariantType == Variant.Type.Dictionary && data.AsGodotDictionary().ContainsKey("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.
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
public override Variant _GetDragData(Vector2 atPosition)
{
var myData = MakeData(); // Це ваш користувацький метод, що генерує дані перетягування.
SetDragPreview(MakePreview(myData)); // Це ваш користувацький метод, що генерує попередній перегляд даних перетягування.
return myData;
}
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 🔗
Віртуальний метод, який реалізує користувач. Повертає текст спливаючої підказки для позиції 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:")
public override void _GuiInput(InputEvent @event)
{
if (@event is InputEventMouseButton mb)
{
if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)
{
GD.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 🔗
Віртуальний метод, що реалізується користувачем. Повертає, чи знаходиться задана точка 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 або вузол, який не є елементом керування, замість нього буде використовуватися підказка за замовчуванням.
Повернений вузол буде додано як дочірній елемент до 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
public override Control _MakeCustomTooltip(string forText)
{
var label = new Label();
label.Text = forText;
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
public override Control _MakeCustomTooltip(string forText)
{
Node tooltip = ResourceLoader.Load<PackedScene>("res://some_tooltip_scene.tscn").Instantiate();
tooltip.GetNode<Label>("Label").Text = forText;
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"))
// Маючи дочірній вузол мітки "MyLabel", замінимо його колір шрифту спеціальним значенням.
GetNode<Label>("MyLabel").AddThemeColorOverride("font_color", new Color(1, 0.5f, 0));
// Скинемо кольору шрифту дочірньої мітки.
GetNode<Label>("MyLabel").RemoveThemeColorOverride("font_color");
// Крім того, його можна замінити значенням за замовчуванням із типу Label.
GetNode<Label>("MyLabel").AddThemeColorOverride("font_color", GetThemeColor("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")
// Наведений нижче фрагмент припускає, що дочірньому вузлу "MyButton" призначено StyleBoxFlat.
// Ресурси спільно використовуються між екземплярами, тому нам потрібно їх дублювати
// щоб уникнути зміни зовнішнього вигляду всіх інших кнопок.
StyleBoxFlat newStyleboxNormal = GetNode<Button>("MyButton").GetThemeStylebox("normal").Duplicate() as StyleBoxFlat;
newStyleboxNormal.BorderWidthTop = 3;
newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);
GetNode<Button>("MyButton").AddThemeStyleboxOverride("normal", newStyleboxNormal);
// Видалити перевизначення поля стилю.
GetNode<Button>("MyButton").RemoveThemeStyleboxOverride("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.
Повертає offset_left і offset_top. Див. також position.
Vector2 get_combined_minimum_size() const 🔗
Повертає сумарний мінімальний розмір з custom_minimum_size та get_minimum_size().
CursorShape get_cursor_shape(position: Vector2 = Vector2(0, 0)) const 🔗
Повертає форму курсора миші для цього елемента керування при наведенні на position у локальних координатах. Для більшості елементів керування це те саме, що й mouse_default_cursor_shape, але деякі вбудовані елементи керування реалізують складнішу логіку.
Повертає 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_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 🔗
Повертає вершину батьківського контролю.
Повертає позицію та розмір елемента керування у системі координат вузла, що його містить. Дивіться position, scale та size.
Примітка: Якщо обертання елемента не є обертанням за замовчуванням, отриманий розмір не має сенсу.
Примітка: Встановлення значення Viewport.gui_snap_controls_to_pixels на true може призвести до неточностей округлення між відображеним елементом керування та поверненим Rect2.
Vector2 get_screen_position() const 🔗
Повертає позицію цього Керування у глобальних координатах екрана (тобто з урахуванням позиції вікна). Здебільшого корисний для плагінів редактора.
Дорівнює global_position, якщо вікно вбудовано (див. Viewport.gui_embed_subwindows).
Приклад використання для показу спливаючого вікна:
popup_menu.position = get_screen_position() + 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")
public override void _Ready()
{
// Отримати колір шрифту, визначений для поточного класу елемента керування, якщо він існує.
Modulate = GetThemeColor("font_color");
// Отримання кольору шрифту, визначеного для класу Button.
Modulate = GetThemeColor("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 🔗
Повертає текст спливаючої підказки для позиції at_position у локальних координатах елемента керування, яка зазвичай з’являється, коли курсор знаходиться над цим елементом керування. За замовчуванням він повертає tooltip_text.
Цей метод можна змінити, щоб налаштувати його поведінку. Перегляньте _get_tooltip().
Примітка: Якщо цей метод повертає порожній String і _make_custom_tooltip() не перевизначено, підказка не відображається.
void grab_click_focus() 🔗
Створює InputEventMouseButton, який намагається клацнути елемент керування. Якщо подію отримано, елемент керування отримує фокус.
func _process(delta):
grab_click_focus() # При клацанні іншого вузла керування, цей вузол буде натиснутий.
public overridevoid _Process (double delta)
{
GrabClickFocus(); // Якщо клацнути інший вузол керування, натомість клацнеться цей вузол.
}
void grab_focus() 🔗
Викрасти фокус з іншого елемента управління і стати фокусованим елементом управління (див. focus_mode).
Примітка: Використання цього методу разом з Callable.call_deferred() робить його більш надійним, особливо при виклику всередині Node._ready().
Повертає true, якщо це поточний фокусований елемент керування. Див. focus_mode.
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.
Повертає 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
[Export]
private Color _color = new Color(1, 0, 0, 1);
public override Variant _GetDragData(Vector2 atPosition)
{
// Використовувати елемент керування, якого немає в дереві
var cpb = new ColorPickerButton();
cpb.Color = Color;
cpb.Size = new Vector2(50, 50);
SetDragPreview(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 цього Control.
Примітка: warp_mouse() підтримується лише у Windows, macOS та Linux. Він не впливає на Android, iOS та Web.