@GDScript
Встроенные в GDScript константы, функции и аннотации.
Описание
Список служебных функций и аннотаций, доступных из любого скрипта, написанного на GDScript.
Список глобальных функций и констант, к которым можно обращаться в любом скриптовом языке, см. в @GlobalScope.
Обучающие материалы
Методы
void |
|
convert(what: Variant, type: Variant.Type) |
|
dict_to_inst(dictionary: Dictionary) |
|
inst_to_dict(instance: Object) |
|
is_instance_of(value: Variant, type: Variant) |
|
void |
print_debug(...) vararg |
void |
|
range(...) vararg |
|
type_exists(type: StringName) |
Константы
PI = 3.14159265358979 🔗
Константа, которая показывает, сколько раз диаметр окружности укладывается вокруг её периметра. Это эквивалентно TAU / 2, или повороту на 180 градусов.
TAU = 6.28318530717959 🔗
Константа окружности, длина окружности круга в радианах. Это эквивалентно числу PI * 2, или повороту в 360 градусов.
INF = inf 🔗
Положительная бесконечность с плавающей точкой. Это результат деления с плавающей точкой, когда делитель равен 0.0. Для отрицательной бесконечности, используйте -INF. Деление на -0.0 приведет к отрицательной бесконечности, если числитель положительный, поэтому деление на 0.0 не то же самое, что деление на -0.0 (несмотря на то, что 0.0 == -0.0 возвращает true).
Внимание: Числовая бесконечность является понятием только для чисел с плавающей точкой и не имеет эквивалента для целых чисел. Деление целого числа на 0 не приведет к INF и вместо этого приведет к ошибке времени выполнения.
NAN = nan 🔗
"Не число" (или NaN), недопустимое значение с плавающей точкой. Его возвращают некоторые некорректные операции, такие как деление числа с плавающей точкой 0.0 на 0.0.
NAN обладает особыми свойствами, включая то, что != всегда возвращает true, пока другие операторы сравнения всегда возвращают false. Это справедливо даже при сравнении самой константы с собой (NAN == NAN возвращает false и NAN != NAN возвращает true). Из-за этой особенности необходимо использовать @GlobalScope.is_nan(), чтобы проверить, что число равно NAN.
Внимание: "Не число" (или NaN) является понятием только для чисел с плавающей точкой и не имеет эквивалента для целых чисел. Деление целого числа 0 на 0 не приведет к NAN и вместо этого приведет к ошибке времени выполнения.
Аннотации
@abstract() 🔗
Помечает класс или метод как абстрактный.
Абстрактный класс — это класс, экземпляр которого невозможно создать напрямую. Вместо этого он предназначен для наследования другими классами. Попытка создать экземпляр абстрактного класса приведёт к ошибке.
Абстрактный метод — это метод, не имеющий реализации. Поэтому после заголовка функции ожидается символ новой строки или точка с запятой. Это определяет соглашение, которому должны соответствовать наследующие классы, поскольку сигнатура метода должна быть совместима при переопределении.
Наследующие классы должны либо предоставлять реализации для всех абстрактных методов, либо наследующий класс должен быть помечен как абстрактный. Если у класса есть хотя бы один абстрактный метод (собственный или нереализованный унаследованный), то он также должен быть помечен как абстрактный. Однако обратное неверно: абстрактный класс может не иметь абстрактных методов.
@abstract class Shape:
@abstract func draw()
class Circle extends Shape:
func draw():
print("Рисование круга.")
class Square extends Shape:
func draw():
print("Рисование квадрата.")
@export() 🔗
Отметьте следующее свойство как экспортированное (его можно редактировать в панели инспектора и сохранить на диске). Для управления типом экспортируемого свойства используйте нотацию подсказки типа.
extends Node
enum Direction {LEFT, RIGHT, UP, DOWN}
# встроенные типы.
@export var string = ""
@export var int_number = 5
@export var float_number: float = 5
# Перечисления
@export var type: Variant.Type
@export var format: Image.Format
@export var direction: Direction
# Ресурсы.
@export var image: Image
@export var custom_resource: CustomResource
# Узлы.
@export var node: Node
@export var custom_node: CustomNode
# Типизированные массивы.
@export var int_array: Array[int]
@export var direction_array: Array[Direction]
@export var image_array: Array[Image]
@export var node_array: Array[Node]
Примечание. Пользовательские ресурсы и узлы должны быть зарегистрированы как глобальные классы с использованием class_name.
Примечание: Экспорт узлов поддерживается только в классах, производных от Node, и имеет ряд других ограничений.
@export_category(name: String) 🔗
Определяет новую категорию для следующих экспортируемых свойств. Помогает организовать свойства в Инспекторском доке.
Также просмотрите @GlobalScope.PROPERTY_USAGE_CATEGORY.
@export_category("Statistics")
@export var hp = 30
@export var speed = 1.25
Примечание: Категории в листе Инспекторского дока обычно разделяют свойства с других классов (Node, Node2D, Sprite, и др.). Для лучшего понимания, вместо этого рекомендуется использовать @export_group и @export_subgroup.
@export_color_no_alpha() 🔗
Экспорт свойства Color без разрешения редактирования его прозрачности (Color.a)
См. также @GlobalScope.PROPERTY_HINT_COLOR_NO_ALPHA.
@export_color_no_alpha var dye_color: Color
@export_color_no_alpha var dye_colors: Array[Color]
@export_custom(hint: PropertyHint, hint_string: String, usage: BitField[PropertyUsageFlags] = 6) 🔗
Позволяет устанавливать пользовательскую подсказку, строку подсказки и флаги использования для экспортируемого свойства. Обратите внимание, что в GDScript нет проверки, он просто передает параметры в редактор.
@export_custom(PROPERTY_HINT_NODE, "suffix:m") var suffix: Vector3
Примечание: Независимо от значения usage флаг @GlobalScope.PROPERTY_USAGE_SCRIPT_VARIABLE всегда добавляется, как и в случае с любой, явно объявленной переменной скрипта.
@export_dir() 🔗
Экспортируйте свойство String, Array[String] или PackedStringArray как путь к каталогу. Путь будет ограничен папкой проекта и ее подпапками. См. @export_global_dir, чтобы разрешить выбор из всей файловой системы.
См. также @GlobalScope.PROPERTY_HINT_DIR
@export_dir var sprite_folder_path: String
@export_dir var sprite_folder_paths: Array[String]
@export_enum(names: String, ...) vararg 🔗
Экспортируйте свойство int, String, Array[int], Array[String], PackedByteArray, PackedInt32Array, PackedInt64Array или PackedStringArray как перечисленный список параметров (или массив параметров). Если свойство имеет тип int, то индекс значения сохраняется в том же порядке, в котором указаны значения. Вы можете добавлять явные значения с помощью двоеточия. Если свойство имеет тип String, то значение сохраняется.
См. также @GlobalScope.PROPERTY_HINT_ENUM.
@export_enum("Warrior", "Magician", "Thief") var character_class: int
@export_enum("Slow:30", "Average:60", "Very Fast:200") var character_speed: int
@export_enum("Rebecca", "Mary", "Leah") var character_name: String
@export_enum("Sword", "Spear", "Mace") var character_items: Array[int]
@export_enum("double_jump", "climb", "dash") var character_skills: Array[String]
Если вы хотите задать начальное значение, вы должны указать его явно:
@export_enum("Rebecca", "Mary", "Leah") var character_name: String = "Rebecca"
Если вы хотите использовать именованные перечисления GDScript, то вместо этого используйте @export:
enum CharacterName {REBECCA, MARY, LEAH}
@export var character_name: CharacterName
enum CharacterItem {SWORD, SPEAR, MACE}
@export var character_items: Array[CharacterItem]
@export_exp_easing(hints: String = "", ...) vararg 🔗
Экспортирует свойство с плавающей точкой с помощью виджета редактора плавности. Дополнительные подсказки могут быть предоставлены, чтобы подкорректировать действия виджета. "attenuation" ("затухание") переворачивает ломаную, что делает её более интуитивной для редактирования свойств затухания. "positive_only" ("только_положительные") ограничивает диапазон значений до 0, тем самым оставляя только 0 и числа больше 0.
Также просмотрите @GlobalScope.PROPERTY_HINT_EXP_EASING.
@export_exp_easing var transition_speed
@export_exp_easing("attenuation") var fading_attenuation
@export_exp_easing("positive_only") var effect_power
@export_exp_easing var speeds: Array[float]
@export_file(filter: String = "", ...) vararg 🔗
Экспортируйте свойство String, Array[String] или PackedStringArray как путь к файлу. Путь будет ограничен папкой проекта и её подпапками. См. @export_global_file, чтобы разрешить выбор из всей файловой системы.
Если указан filter, для выбора будут доступны только соответствующие файлы.
См. также @GlobalScope.PROPERTY_HINT_FILE.
@export_file var sound_effect_path: String
@export_file("*.txt") var notes_path: String
@export_file var level_paths: Array[String]
Примечание: Файл будет сохранён и будет указан как UID, если он доступен. Это гарантирует корректность ссылки даже при перемещении файла. Вы можете преобразовать её в путь, используя методы ResourceUID.
@export_file_path(filter: String = "", ...) vararg 🔗
То же, что и @export_file, но файл будет сохранён как необработанный путь. Это означает, что он может стать недействительным при перемещении файла. Если вы экспортируете путь Resource, рассмотрите возможность использования @export_file.
@export_flags(names: String, ...) vararg 🔗
Экспортировать целочисленное свойство как поле битового флага. Это позволяет хранить несколько значений "checked" или true с одним свойством и удобно выбирать их из панели инспектора.
См. также @GlobalScope.PROPERTY_HINT_FLAGS.
@export_flags("Fire", "Water", "Earth", "Wind") var spell_elements = 0
Вы можете добавлять явные значения, используя двоеточие:
@export_flags("Self:4", "Allies:8", "Foes:16") var spell_targets = 0
Вы также можете объединить несколько флагов:
@export_flags("Self:4", "Allies:8", "Self and Allies:12", "Foes:16")
var spell_targets = 0
Примечание: Значение флага должно быть не менее 1 и не более 2 ** 32 - 1.
Примечание: В отличие от @export_enum, предыдущее явное значение не учитывается. В следующем примере A равно 16, B равно 2, C равно 4.
@export_flags("A:16", "B", "C") var x
Вы также можете использовать аннотацию на Array[int], PackedByteArray, PackedInt32Array, и PackedInt64Array
@export_flags("Fire", "Water", "Earth", "Wind") var phase_elements: Array[int]
Экспортирует свойство целого числа как поле битового флага для 2D слоев навигации. Виджет в вкладке инспектора будет использовать имена слоев, определённых в ProjectSettings.layer_names/2d_navigation/layer_1.
Также просмотрите @GlobalScope.PROPERTY_HINT_LAYERS_2D_NAVIGATION.
@export_flags_2d_navigation var navigation_layers: int
@export_flags_2d_navigation var navigation_layers_array: Array[int]
@export_flags_2d_physics() 🔗
Экспортирует свойство целого числа как поле битового флага для 2D физики слоев. Виджет в окне Инспектора будет использовать имена слоев, определённых в ProjectSettings.layer_names/2d_physics/layer_1.
Также просмотрите @GlobalScope.PROPERTY_HINT_LAYERS_2D_PHYSICS.
@export_flags_2d_physics var physics_layers: int
@export_flags_2d_physics var physics_layers_array: Array[int]
@export_flags_2d_render() 🔗
Экспортирует свойство целого числа как поле битового флага для рендеринга 2D слоев. Виджет в окне Инспектора будет использовать имена слоев, указанных в ProjectSettings.layer_names/2d_render/layer_1.
Также просмотрите @GlobalScope.PROPERTY_HINT_LAYERS_2D_RENDER.
@export_flags_2d_render var render_layers: int
@export_flags_2d_render var render_layers_array: Array[int]
Экспортирует свойство целого числа как поле битового флага для 3D слоёв навигации. Виджет в Инспекторском доке будет использовать имена слоёв, указанных в ProjectSettings.layer_names/3d_navigation/layer_1.
Также просмотрите @GlobalScope.PROPERTY_HINT_LAYERS_3D_NAVIGATION.
@export_flags_3d_navigation var navigation_layers: int
@export_flags_3d_navigation var navigation_layers_array: Array[int]
@export_flags_3d_physics() 🔗
Экспортирует свойство целого числа как поле битового флага для 3D физических слоев. Виджет в Инспекторском доке будет использовать имена слоёв, указанных в ProjectSettings.layer_names/3d_physics/layer_1.
Также посмотрите @GlobalScope.PROPERTY_HINT_LAYERS_3D_PHYSICS.
@export_flags_3d_physics var physics_layers: int
@export_flags_3d_physics var physics_layers_array: Array[int]
@export_flags_3d_render() 🔗
Экспортирует свойство целого числа как поле битового флага для рендеринга 3D слоев. Виджет в Инспекторском доке будет использовать имена слоёв, указанных в ProjectSettings.layer_names/3d_render/layer_1.
Также посмотрите @GlobalScope.PROPERTY_HINT_LAYERS_3D_RENDER.
@export_flags_3d_render var render_layers: int
@export_flags_3d_render var render_layers_array: Array[int]
@export_flags_avoidance() 🔗
Экспортирует целочисленное свойство как поле битового флага для слоев избегания навигации. Виджет в Инспекторском доке будет использовать имена слоёв, объявленных в ProjectSettings.layer_names/avoidance/layer_1.
Также посмотрите @GlobalScope.PROPERTY_HINT_LAYERS_AVOIDANCE.
@export_flags_avoidance var avoidance_layers: int
@export_flags_avoidance var avoidance_layers_array: Array[int]
@export_global_dir() 🔗
Экспортирует свойство String, Array[String] или PackedStringArray как абсолютный путь к каталогу. Путь может быть взят из всей файловой системы. Чтобы ограничиться папкой проекта и ее вложенными папками, смотрите @export_dir.
Также просмотрите @GlobalScope.PROPERTY_HINT_GLOBAL_DIR.
@export_global_dir var sprite_folder_path: String
@export_global_dir var sprite_folder_paths: Array[String]
@export_global_file(filter: String = "", ...) vararg 🔗
Экспортируйте свойство String, Array[String] или PackedStringArray как абсолютный путь к файлу. Путь может быть взят из всей файловой системы. Используйте @export_file, чтобы ограничить его до папок проекта или его подпапок.
Если указан filter, то для выборки будут доступны только совпадающие файлы.
Также просмотрите @GlobalScope.PROPERTY_HINT_GLOBAL_FILE.
@export_global_file var sound_effect_path: String
@export_global_file("*.txt") var notes_path: String
@export_global_file var multiple_paths: Array[String]
@export_group(name: String, prefix: String = "") 🔗
Определите новую группу для следующих экспортированных свойств. Это поможет упорядочить свойства в доке Инспектора. Группы могут быть добавлены с необязательным префиксом prefix, который заставит группу учитывать только те свойства, которые имеют этот префикс. Группировка прервется на первом свойстве, не имеющем префикса. Префикс также будет удален из имени свойства в доке Инспектора.
Если префикс prefix не указан, то каждое следующее свойство будет добавлено в группу. Группа заканчивается, когда определяется следующая группа или категория. Вы также можете принудительно завершить группу, используя эту аннотацию с пустыми строками в качестве параметров, @export_group("", "").
Группы не могут быть вложенными, используйте @export_subgroup для добавления подгрупп внутри групп.
См. также @GlobalScope.PROPERTY_USAGE_GROUP.
@export_group("Racer Properties")
@export var nickname = "Nick"
@export var age = 26
@export_group("Car Properties", "car_")
@export var car_label = "Speedy"
@export var car_number = 3
@export_group("", "")
@export var ungrouped_number = 3
@export_multiline(hint: String = "", ...) vararg 🔗
Экспортируйте свойство типа String, Array[String], PackedStringArray, Dictionary или Array[Dictionary] с помощью большого виджета TextEdit вместо LineEdit. Это добавляет поддержку многострочного содержимого и упрощает редактирование больших объемов текста, хранящихся в свойстве.
См. также @GlobalScope.PROPERTY_HINT_MULTILINE_TEXT.
@export_multiline var character_biography
@export_multiline var npc_dialogs: Array[String]
@export_multiline("monospace", "no_wrap") var favorite_ascii_art: String
@export_node_path(type: String = "", ...) vararg 🔗
Экспортирует свойство NodePath или Array[NodePath] с фильтром для разрешенных типов узлов.
См. также @GlobalScope.PROPERTY_HINT_NODE_PATH_VALID_TYPES.
@export_node_path("Button", "TouchScreenButton") var some_button
@export_node_path("Button", "TouchScreenButton") var many_buttons: Array[NodePath]
Примечание: Тип должен быть собственным классом или глобально зарегистрированным скриптом (с помощью ключевого слова class_name), который наследует Node.
@export_placeholder(placeholder: String) 🔗
Экспортируйте свойство String, Array[String] или PackedStringArray с текстом-заполнителем, отображаемым в виджете редактора, если значение отсутствует.
См. также @GlobalScope.PROPERTY_HINT_PLACEHOLDER_TEXT.
@export_placeholder("Name in lowercase") var character_id: String
@export_placeholder("Name in lowercase") var friend_ids: Array[String]
@export_range(min: float, max: float, step: float = 1.0, extra_hints: String = "", ...) vararg 🔗
Экспортируйте свойство типа int, float, Array[int], Array[float], PackedByteArray, PackedInt32Array, PackedInt64Array, PackedFloat32Array или PackedFloat64Array в качестве значения диапазона. Диапазон должен быть определен параметрами min и max, а также необязательным параметром step и различными дополнительными подсказками. Параметр step по умолчанию равен 1 для целочисленных свойств. Для чисел с плавающей запятой это значение зависит от вашей настройки EditorSettings.interface/inspector/default_float_step.
Если указаны подсказки "or_greater" и "or_less", виджет редактора не будет ограничивать значение границами диапазона. Подсказка "exp" заставит редактируемые значения в диапазоне изменяться экспоненциально. Подсказка "prefer_slider" заставит целочисленные значения использовать ползунок вместо стрелок для редактирования, а "hide_control" скроет элемент, управляющий значением виджета редактора.
Подсказки также позволяют указывать единицы измерения редактируемого значения. Используя "radians_as_degrees", вы можете указать, что фактическое значение указано в радианах, но должно отображаться в градусах в панели инспектора (значения диапазона также указаны в градусах). "degrees" позволяет добавить знак градуса в качестве суффикса единиц измерения (значение остается неизменным). Наконец, можно указать пользовательский суффикс с помощью "suffix:unit", где "unit" может быть любой строкой.
См. также @GlobalScope.PROPERTY_HINT_RANGE.
@export_range(0, 20) var number
@export_range(-10, 20) var number
@export_range(-10, 20, 0.2) var number: float
@export_range(0, 20) var numbers: Array[float]
@export_range(0, 100, 1, "or_greater") var power_percent
@export_range(0, 100, 1, "or_greater", "or_less") var health_delta
@export_range(-180, 180, 0.001, "radians_as_degrees") var angle_radians
@export_range(0, 360, 1, "degrees") var angle_degrees
@export_range(-8, 8, 2, "suffix:px") var target_offset
@export_storage() 🔗
Экспорт свойства с @GlobalScope.PROPERTY_USAGE_STORAGE флажком. Свойство не отображается в редакторе, но оно сериализуется и сохраняется в сцене или файле ресурсов. Это может быть полезно для @tool скриптов. Так же значение свойства копируется, когда Resource.duplicate() или Node.duplicate() вызывается, в отличии от не экспортируемых переменных
var a # Не хранится в файле, не отображается в редакторе .
@export_storage var b # Хранится в файле, не отображается в редакторе.
@export var c: int # Хранится в файле, отображается в редакторе.
@export_subgroup(name: String, prefix: String = "") 🔗
Определите новую подгруппу для следующих экспортируемых свойств. Это помогает организовать свойства в доке инспектора. Подгруппы работают точно так же, как группы, за исключением того, что для них нужна родительская группа. См. @export_group.
См. также @GlobalScope.PROPERTY_USAGE_SUBGROUP.
@export_group("Racer Properties")
@export var nickname = "Nick"
@export var age = 26
@export_subgroup("Car Properties", "car_")
@export var car_label = "Speedy"
@export var car_number = 3
Примечание: Подгруппы не могут быть вложенными, но вы можете использовать разделитель слеш (/) для достижения желаемого эффекта:
@export_group("Car Properties")
@export_subgroup("Wheels", "wheel_")
@export_subgroup("Wheels/Front", "front_wheel_")
@export var front_wheel_strength = 10
@export var front_wheel_mobility = 5
@export_subgroup("Wheels/Rear", "rear_wheel_")
@export var rear_wheel_strength = 8
@export var rear_wheel_mobility = 3
@export_subgroup("Wheels", "wheel_")
@export var wheel_material: PhysicsMaterial
@export_tool_button(text: String, icon: String = "") 🔗
Экспортируйте свойство Callable как нажимаемую кнопку с меткой text. При нажатии кнопки вызывается вызываемое свойство.
Если указан icon, он используется для получения значка для кнопки через Control.get_theme_icon() из типа темы "EditorIcons". Если icon опущен, вместо него используется значок по умолчанию "Callable".
Рассмотрите возможность использования EditorUndoRedoManager, чтобы обеспечить безопасную отмену действия.
Смотрите также @GlobalScope.PROPERTY_HINT_TOOL_BUTTON.
@tool
extends Sprite2D
@export_tool_button("Hello") var hello_action = hello
@export_tool_button("Randomize the color!", "ColorRect")
var randomize_color_action = randomize_color
func hello():
print("Hello world!")
func randomize_color():
var undo_redo = EditorInterface.get_editor_undo_redo()
undo_redo.create_action("Randomized Sprite2D Color")
undo_redo.add_do_property(self, &"self_modulate", Color(randf(), randf(), randf()))
undo_redo.add_undo_property(self, &"self_modulate", self_modulate)
undo_redo.commit_action()
Примечание: Свойство экспортируется без флага @GlobalScope.PROPERTY_USAGE_STORAGE, поскольку Callable не может быть правильно сериализован и сохранен в файле.
Примечание: В экспортированном проекте нет ни EditorInterface, ни EditorUndoRedoManager, что может привести к поломке некоторых скриптов. Чтобы предотвратить это, можно использовать Engine.get_singleton() и опустить статический тип из объявления переменной:
var undo_redo = Engine.get_singleton(&"EditorInterface").get_editor_undo_redo()
Примечание: Избегайте хранения вызываемых лямбда-функций в переменных-членах классов на основе RefCounted (например, ресурсов), так как это может привести к утечкам памяти. Используйте только вызываемые методы и, по желанию, Callable.bind() или Callable.unbind().
Добавить пользовательский значок в текущий скрипт. Значок, указанный в icon_path, отображается в доке сцены для каждого узла этого класса, а также в различных диалоговых окнах редактора.
@icon("res://path/to/class/icon.svg")
Примечание: Только скрипт может иметь свой значок. Внутренние классы не поддерживаются.
Примечание: Поскольку аннотации описывают свой предмет, аннотация @icon должна быть размещена перед определением класса и наследованием.
Примечание: В отличие от большинства других аннотаций, аргумент аннотации @icon должен быть строковым литералом (константные выражения не поддерживаются).
@onready() 🔗
Отметьте следующее свойство как назначенное, когда Node готов. Значения для этих свойств не назначаются немедленно при инициализации узла (Object._init()), а вместо этого вычисляются и сохраняются непосредственно перед Node._ready().
@onready var character_name: Label = $Label
@rpc(mode: String = "authority", sync: String = "call_remote", transfer_mode: String = "reliable", transfer_channel: int = 0) 🔗
Отметьте следующий метод для удаленных процедурных вызовов. См. Высокоуровневый многопользовательский режим.
Если mode установлено как "any_peer", это разрешает любому узлу вызывать эту функцию RPC. В противном случае, вызывать ее может только уполномоченный узел, и mode следует оставить как "authority". При настройке функций как RPC с помощью Node.rpc_config() каждый из этих режимов соответствует режимам RPC MultiplayerAPI.RPC_MODE_AUTHORITY и MultiplayerAPI.RPC_MODE_ANY_PEER. См. RPCMode. Если узел, не являющийся уполномоченным узлом, попытается вызвать функцию, разрешенную только уполномоченному узлу, функция не будет выполнена. Если ошибка обнаруживается локально (когда конфигурация RPC согласована между локальным и удаленным узлом), сообщение об ошибке будет отображено на узле-отправителе. В противном случае, удаленный узел обнаружит ошибку и выведет сообщение об ошибке на свой узел.
Если sync установлено как "call_remote", функция будет выполняться только на удаленном узле, но не локально. Чтобы запустить эту функцию локально, установите sync в "call_local". При настройке функций как RPC с помощью Node.rpc_config() это эквивалентно установке call_local в true.
Принимаемые значения transfer_mode: "unreliable", "unreliable_ordered" или "reliable". Этот параметр задает режим передачи данных для базового объекта MultiplayerPeer. См. MultiplayerPeer.transfer_mode.
Параметр transfer_channel определяет канал базового объекта MultiplayerPeer. См. MultiplayerPeer.transfer_channel.
Порядок параметров mode, sync и transfer_mode не имеет значения, но значения, относящиеся к одному и тому же аргументу, не должны использоваться более одного раза. Параметр transfer_channel всегда должен быть 4-м аргументом (необходимо указать 3 предшествующих аргумента).
@rpc
func fn(): pass
@rpc("any_peer", "unreliable_ordered")
func fn_update_pos(): pass
@rpc("authority", "call_remote", "reliable", 0) # Эквивалентно @rpc
func fn_default(): pass
Примечание: Методы, аннотированные @rpc, не могут принимать объекты, которые определяют обязательные параметры в Object._init(). Дополнительные сведения см. в Object._init().
@static_unload() 🔗
Делает так, чтобы скрипт со статическими переменными не сохранялся после потери всех ссылок. При повторной загрузке скрипта статическим переменным будут установлены значения по умолчанию.
**Примечание: ** Поскольку аннотации описывают собственный предмет, аннотация @static_unload должна быть помещена перед объявлением класса и наследованием.
Предупреждение: В настоящее время, из-за ошибки скрипты никогда не освобождаются, даже если используется аннотация @static_unload.
@tool() 🔗
Отметьте текущий скрипт как скрипт-инструмент, позволяя редактору загружать и выполнять его. См. Запуск кода в редакторе
@tool
extends Node
Примечание: Поскольку аннотации описывают свой предмет, аннотация @tool должна быть помещена перед определением и наследованием класса.
@warning_ignore(warning: String, ...) vararg 🔗
Отметьте следующее утверждение, чтобы игнорировать указанное warning. См. Система предупреждений GDScript.
func test():
print("hello")
return
@warning_ignore("unreachable_code")
print("unreachable")
См. также @warning_ignore_start и @warning_ignore_restore.
@warning_ignore_restore(warning: String, ...) vararg 🔗
Прекращает игнорировать перечисленные типы предупреждений после @warning_ignore_start. Игнорирование указанных типов предупреждений будет сброшено до настроек проекта. Эту аннотацию можно опустить, чтобы игнорировать типы предупреждений до конца файла.
Примечание: В отличие от большинства других аннотаций, аргументы аннотации @warning_ignore_restore должны быть строковыми литералами (константные выражения не поддерживаются).
@warning_ignore_start(warning: String, ...) vararg 🔗
Начинает игнорировать перечисленные типы предупреждений до конца файла или аннотации @warning_ignore_restore с указанным типом предупреждения.
func test():
var a = 1 # Warning (if enabled in the Project Settings).
@warning_ignore_start("unused_variable")
var b = 2 # No warning.
var c = 3 # No warning.
@warning_ignore_restore("unused_variable")
var d = 4 # Warning (if enabled in the Project Settings).
Примечание: Чтобы подавить одно предупреждение, используйте вместо этого @warning_ignore.
Примечание: В отличие от большинства других аннотаций, аргументы аннотации @warning_ignore_start должны быть строковыми литералами (константные выражения не поддерживаются).
Описания метода
Color Color8(r8: int, g8: int, b8: int, a8: int = 255) 🔗
Устарело: Use Color.from_rgba8() instead.
Возвращает Color, построенный из красного (r8), зеленого (g8), синего (b8) и, по желанию, альфа (a8) целочисленных каналов, каждый делится на 255.0 для получения конечного значения. Использование Color8() вместо стандартного конструктора Color полезно когда нужно точно соответствовать значения цвета в Image.
:: .
var red = Color8(255, 0, 0) # То же самое, что Color(1, 0, 0). var dark_blue = Color8(0, 0, 51) # То же, что Color(0, 0, 0.2). var my_color = Color8(306, 255, 0, 102) # То же, что Color(1.2, 1, 0, 0.4)..
Примечание: Из-за меньшей точности Color8() по сравнению со стандартным конструктором Color, цвет созданный с Color8() обычно не будет равен тому же цвету созданному с помощью стандартного конструктора Color. Используйте Color.is_equal_approx() для сравнений чтобы избежать проблем с ошибкой точности плавающей точки.
void assert(condition: bool, message: String = "") 🔗
Проверяет, что condition равно true. Если condition равно false, будет сгенерирована ошибка. Если запущено из редактора, запущенный проект также будет приостановлен, пока вы не возобновите его. Это может быть использовано как более сильная форма @GlobalScope.push_error() для сообщения об ошибках разработчикам проекта или пользователям дополнений.
Необязательное message может быть показано в добавление к универсальному сообщению "Assertion failed". Вы можете предоставить дополнительные детали о том, почему ваше утверждение не удалось.
Примечание: В целях оптимизации, код внутри assert() исполняется только в отладочных сборках, или когда вы запускаете проект из редактора . Не добавляйте дополнительный код, у которого есть побочные эффекты в вызове assert(). В противном случае, проект будет вести себя по-другому при экспорте в режиме релиза.
# Предположим, вы хотите, чтобы скорость (speed) была между 0 и 20.
var speed = -10
assert(speed < 20) # True, программа продолжит выполнение.
assert(speed >= 0) # False, программа будет остановлена.
assert(speed >= 0 and speed < 20) # Вы также можете комбинировать два условных выражения в одной проверке.
assert(speed < 20, "лимит скорости равен 20") # Показывает сообщение.
Примечание: assert() это ключевое слово, а не функция. Поэтому вы не можете обращаться к нему как к Callable или использовать внутри выражений.
Возвращает один символ (в виде String длиной 1) заданной кодовой точки Unicode code.
print(char(65)) # Выводит "A"
print(char(129302)) # Выводит "🤖" (эмодзи с лицом робота)
Это метод, обратный методу ord(). См. также String.chr() и String.unicode_at().
Variant convert(what: Variant, type: Variant.Type) 🔗
Устарело: Use @GlobalScope.type_convert() instead.
Преобразует what в type наилучшим образом. Тип type использует значения Variant.Type.
:: .
var a = [4, 2.5, 1.2] print(a is Array) # Выводит true
var b = convert(a, TYPE_PACKED_BYTE_ARRAY) print(b) # Выводит [4, 2, 1] print(b is Array) # Выводит false
Object dict_to_inst(dictionary: Dictionary) 🔗
Устарело: Consider using JSON.to_native() or Object.get_property_list() instead.
Преобразует словарь dictionary (ранее созданный с помощью inst_to_dict()) обратно в экземпляр объекта. Полезно для десериализации.
Возвращает массив словарей, представляющих текущий стек вызовов.
func _ready():
foo()
func foo():
bar()
func bar():
print(get_stack())
Начиная с _ready(), bar() выведет:
[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
См. также print_debug(), print_stack() и Engine.capture_script_backtraces().
Примечание: По умолчанию обратные трассировки доступны только в редакторских и отладочных сборках. Чтобы включить их и в релизных сборках, необходимо включить ProjectSettings.debug/settings/gdscript/always_track_call_stacks.
Dictionary inst_to_dict(instance: Object) 🔗
Устарело: Consider using JSON.from_native() or Object.get_property_list() instead.
Возвращает переданный instance, преобразованный в словарь. Может быть полезен для сериализации.
:: .
var foo = «bar» func _ready():
var d = inst_to_dict(self) print(d.keys()) print(d.values()).
Выводит:
[@subpath, @path, foo]
[, res://test.gd, bar]
Примечание: Эта функция может быть использована только для сериализации объектов с вложенным GDScript, хранящимся в отдельном файле. Объекты без пользовательского скрипта, со скриптом на другом языке, или со встроенным скриптом не поддерживаются.
Примечание: Эта функция не является рекурсивной, что означает, что вложенные объекты не будут представлены в виде словарей. Кроме того, свойства, передаваемые по ссылке (Object, Dictionary, Array и упакованные массивы) копируются по ссылке, а не дублируются.
bool is_instance_of(value: Variant, type: Variant) 🔗
Возвращает true если value является экземпляром type. Значение type должно быть одним из следующих:
Константа из Variant.Type перечисляемого, например @GlobalScope.TYPE_INT.
Object-производный класс, который существует в ClassDB, например Node.
Script (Вы можете использовать любой класс, включая внутренний).
В отличии от правильного операнда оператора is, type может быть изменяемым значением. Оператор is поддерживает больше функций (такие как типизированные массивы). Используйте оператор вместо этого метода если Вам не нужна динамическая проверка типов.
Примеры:
print(is_instance_of(a, TYPE_INT))
print(is_instance_of(a, Node))
print(is_instance_of(a, MyClass))
print(is_instance_of(a, MyClass.InnerClass))
Примечание: Если value и/или type освобожденные объекты (смотри @GlobalScope.is_instance_valid()), или type не из опций сверху, этот метод вызовет ошибку во время исполнения.
Смотрите также @GlobalScope.typeof(), type_exists(), Array.is_same_typed() (И другие методы Array).
Возвращает длину указанного Variant var. Длина может быть количеством символов String или StringName, количеством элементов любого типа массива или размером Dictionary. Для любого другого типа Variant генерируется ошибка времени выполнения и выполнение останавливается.
a = [1, 2, 3, 4]
len(a) # Вернёт 4
b = "Hello!"
len(b) # Вернёт 6
Возвращает данные вида Resource из файловой системы, расположенный по абсолютному адресу path. Если на ресурс уже присутствуют ссылки в другом месте (например, в другом скрипте или сцене), он загружается с диска при вызове функции, что может вызвать небольшую задержку, особенно при загрузке больших сцен. Чтобы избежать ненужных задержек при многократной загрузке, храните ресурс в переменной, либо используйте preload(). Этот способ является эквивалентом ResourceLoader.load() с параметром ResourceLoader.CACHE_MODE_REUSE.
Примечание: Пути к ресурсам можно получить, щелкнув правой кнопкой мыши на нужном ресурсе в окне файлов проекта и выбрав опцию "Скопировать путь", или перетащив файл из окна файлов проекта в текущий сценарий.
# Загрузите сцену с наименованием "main", расположенную в корне каталога проекта, и кэшируйте ее в переменную.
var main = load("res://main.tscn") # main будет содержать ресурс типа "Сжатая сцена".
Важно: Относительные пути * не * относятся к скрипту, вызывающему этот метод, вместо этого он имеет префикс "res://". Загрузка из относительных путей может работать не так, как ожидалось.
Данная функция является упрощенной версией ResourceLoader.load(), которую можно использовать для более сложных сценариев.
Примечание: Для загрузки файлов с помощью этой функции, их необходимо предварительно импортировать в движок. Если требуется загрузить Image во время выполнения, можно использовать Image.load(). Если вам необходимо импортировать аудиофайлы, вы можете воспользоваться фрагментом, описанным в AudioStreamMP3.data.
Примечание: Если параметр ProjectSettings.editor/export/convert_text_resources_to_binary имеет значение true, то load() не сможет прочитать преобразованные файлы в экспортируемом проекте. Если вы полагаетесь на подгрузку по ходу работы проекта файлов, присутствующих в пакете "PCK", во время выполнения проекта, установите параметр ProjectSettings.editor/export/convert_text_resources_to_binary как false.
Возвращает целое число, представляющее кодовую точку Unicode заданного символа char, которая должна быть строкой длиной 1.
print(ord("A")) # Выводит 65
print(ord("🤖")) # Выводит 129302
Это метод, обратный методу char(). См. также String.chr() и String.unicode_at().
Resource preload(path: String) 🔗
Возвращает ресурс Resource из файловой системы, расположенной по адресу path. Во время выполнения скрипта ресурс загружается при разборе скрипта. Эта функция фактически выступает в качестве ссылки на этот ресурс. Обратите внимание, что данная функция требует, чтобы path был константой String. Если необходимо загрузить ресурс из динамического/переменного пути, используйте load().
Примечание: Пути к ресурсам можно получить, щелкнув правой кнопкой мыши на ресурсе в панели активов и выбрав "Copy Path", или перетащив файл из дока FileSystem в текущий скрипт.
# Создаем экземпляр сцены.
var diamond = preload("res://diamond.tscn").instantiate()
Примечание: preload() - это ключевое слово, а не функция. Поэтому вы не можете получить к нему доступ как к Callable.
void print_debug(...) vararg 🔗
Аналогично @GlobalScope.print(), но при запуске с включённым отладчиком включает текущий кадр стека.
Вывод в консоли может выглядеть следующим образом:
Test print
At: res://test.gd:15:_process()
См. также print_stack(), get_stack() и Engine.capture_script_backtraces().
Примечание: По умолчанию обратные трассировки доступны только в редакторских и отладочных сборках. Чтобы включить их и в релизных сборках, необходимо включить ProjectSettings.debug/settings/gdscript/always_track_call_stacks.
void print_stack() 🔗
Выводит трассировку стека в текущем месте кода.
Вывод в консоли может выглядеть следующим образом:
Frame 0 - res://test.gd:16 in function '_process'
См. также print_debug(), get_stack() и Engine.capture_script_backtraces().
Примечание: По умолчанию обратные трассировки доступны только в редакторских и отладочных сборках. Чтобы включить их и в релизных сборках, необходимо включить ProjectSettings.debug/settings/gdscript/always_track_call_stacks.
Возвращает массив с указанным диапазоном. range() можно вызвать тремя способами:
range(n: int): Начинается с 0, увеличивается с шагом 1 и останавливается перед n. Аргумент n является исключающим.
range(b: int, n: int): начинается с b, увеличивается с шагом 1 и останавливается перед n. Аргументы b и n являются включающими и исключающими соответственно.
range(b: int, n: int, s: int): Начинается с b, увеличивается/уменьшается с шагом s и останавливается перед n. Аргументы b и n являются включающими и исключающими соответственно. Аргумент s может быть отрицательным, но не 0. Если s равен 0, выводится сообщение об ошибке.
range() преобразует все аргументы в int перед обработкой.
Примечание: Возвращает пустой массив, если ни одно значение не соответствует ограничению значения (например, range(2, 5, -1) или range(5, 5, 1)).
Примеры:
print(range(4)) # Выводит [0, 1, 2, 3]
print(range(2, 5)) # Выводит [2, 3, 4]
print(range(0, 6, 2)) # Выводит [0, 2, 4]
print(range(4, 1, -1)) # Выводит [4, 3, 2]
Чтобы выполнить итерацию по Array в обратном направлении, используйте:
var array = [3, 6, 9]
for i in range(array.size() - 1, -1, -1):
print(array[i])
Получаем на выходе:
9
6
3
Чтобы выполнить итерацию по float, преобразуйте их в цикле.
for i in range (3, 0, -1):
print(i / 10.0)
Получаем на выходе:
0.3
0.2
0.1
bool type_exists(type: StringName) 🔗
Возвращает true, если данный Object-производный класс существует в ClassDB. Учитывайте, что Variant типы данных не зарегестрированны в ClassDB.
type_exists("Sprite2D") # Возвращает true
type_exists("NonExistentClass") # Возвращает false