Класс Variant¶
О Godot Engine¶
Variant это самый важный тип данных в Godot, он самый важный класс в движке. Variant занимает 20 байт и может содержать практический любой тип данных внутри себя. Variant'ы редко используются для хранения информации на долгий срок, вместо этого они используются для коммуникации, редактирования, сериализации и передвижения данных.
Variant может:
Хранить почти любой тип данных
Выполнять операции между различными variants (GDScript использует Variant как атомарный/нативный тип данных).
Быть хешированным, так что можно он может быть легко сравнимым с другими variants
Использоваться для безопасной конвертации между типами данных
Использоваться для абстракции вызываемых методов и их аргументов (Godot экспортирует все эти функции через variants)
Использоваться для отложенных вызовов или передвижения данных между потоками.
Быть сереализован как бинарный файл и сохранён на диск, или передан через сеть.
Быть сериализован в текст и использоваться для печати значений и редактируемых настроек.
Работать как экспортируемое свойство, чтобы редактор мог редактировать его везде.
Использоваться для словарей, массивов, парсеров, итд.
По сути, благодаря классу Variant, разработка самого Godot была более простой задачей, так как он позволил с небольшими усилиями создавать сложные динамические конструкции, не типичные для C++. Подружитесь с Variant уже сегодня.
Источники:¶
Контейнеры: Dictionary и Array¶
Оба созданы с помощью variants. Словарь(Dictionary) может обрабатывать любой тип данных как ключ на любой тип данных. Массив(Array) просто содержит массив Variant'ов. Конечно, Variant может содержать в себе словарь или массив, делая их более гибкими.
Изменения контейнера будут модифицировать все ссылки на него. Mutex должен быть создан для его закрытия если требуется мульти-поточный доступ.
Поддержка Копии-на-запись (COW) для контейнеров была удалена в Godot 3.0.