Класс Variant
О Godot Engine
Вариант — важнейший тип данных в Godot. Он занимает всего 24 байта на 64-битных платформах (20 байт на 32-битных) и может хранить практически любой тип данных движка. Варианты редко используются для длительного хранения информации, а в основном используются для связи, редактирования, сериализации и перемещения данных в целом.
Variant может:
Храните практически любые типы данных.
Выполнять операции между различными variants (GDScript использует Variant как атомарный/нативный тип данных).
Быть хешированным, чтобы его можно было быстро сравнить с другими вариантами.
Использовать для безопасного преобразования типов данных.
Используется для абстрагирования вызывающих методов и их аргументов (Godot экспортирует все свои функции через варианты).
Использоваться для отложенных вызовов или передвижения данных между потоками.
Быть сереализован как бинарный файл и сохранён на диск, или передан через сеть.
Быть сериализован в текст и использоваться для печати значений и редактируемых настроек.
Работать как экспортируемое свойство, чтобы редактор мог редактировать его везде.
Использоваться для словарей, массивов, парсеров, итд.
По сути, благодаря классу Variant, разработка самого Godot была более простой задачей, так как он позволил с небольшими усилиями создавать сложные динамические конструкции, не типичные для C++. Подружитесь с Variant уже сегодня.
Примечание
Все типы в Variant, за исключением Nil и Object, не могут быть null и всегда должны хранить допустимое значение. Поэтому эти типы в Variant называются необнуляемыми типами.
Один из типов Variant — Nil, который может хранить только значение null. Следовательно, Variant может содержать значение null, хотя все типы Variant, за исключением Nil и Object, не допускают значения "null".
Ссылки
Список типов вариантов
Эти типы доступны в Variant:
Тип |
Примечания |
|---|---|
Nil (можно хранить только |
Тип, допускающий значение NULL |
2D-аналог AABB |
|
3D-аналог Rect2 |
|
Тип, допускающий значение NULL |
|
Контейнеры: Array (массив) и Dictionary (словарь)
Оба класса Array и Dictionary реализованы с использованием вариантов. Словарь может сопоставить любой тип данных, используемый в качестве ключа, с любым другим типом данных. Массив просто содержит массив вариантов. Конечно, вариант также может содержать словарь или массив внутри, что делает его ещё более гибким.
Modifications to a container will modify all references to it. A Mutex should be created to lock it if multi-threaded access is desired.