Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Клас Variant
Відомості
Variant є найважливішим типом даних у Godot. Variant займає лише 24 байти на 64-розрядних платформах (20 байтів на 32-розрядних платформах) і може зберігати в собі майже будь-який тип даних двигуна. Варіанти рідко використовуються для зберігання інформації протягом тривалого періоду часу, натомість вони використовуються в основному для зв’язку, редагування, серіалізації та загалом переміщення даних.
Варіант може:
Зберігайте практично будь-які типи даних.
Виконуйте операції між багатьма варіантами (GDScript використовує Variant як свій атомарний/власний тип даних).
Бути хешованим, щоб його можна було швидко порівняти з іншими варіантами.
Використовується для безпечного перетворення між типами даних.
Використовується для абстрактного виклику методів та їхніх аргументів (Godot експортує всі свої функції через варіанти).
Використовується для відкладення викликів або переміщення даних між потоками.
Бути серіалізованим як двійковий і зберігатися на диску або передаватися через мережу.
Бути серіалізованим у текст і використовувати його для друку значень і параметрів, які можна редагувати.
Працюйте як експортована властивість, тому редактор може редагувати її універсально.
Використовується для словників, масивів, аналізаторів тощо.
Загалом, завдяки класу Variant написання самого Godot було набагато, набагато легшим завданням, оскільки він дозволяє створювати дуже динамічні конструкції, які не є звичними для C++, з невеликими зусиллями. Станьте другом Variant сьогодні.
Примітка
Усі типи у Variant, окрім Nil та Object, не можуть бути null та завжди повинні зберігати дійсне значення. Тому ці типи у Variant називаються ненульовими типами.
Одним із типів Variant є Nil, який може зберігати лише значення null. Таким чином, Variant може містити значення null, навіть якщо всі типи Variant, за винятком Nil і Object, не допускають значення null.
Посилання
Список типів варіантів
Ці типи доступні у варіантах:
Тип |
Нотатки |
|---|---|
Нуль (може зберігати лише |
Тип із можливістю нульового значення |
class_string |
|
class_vector2 |
|
class_vector2i |
|
class_rect2 |
2D аналог AABB |
class_rect2i |
|
class_vector3 |
|
class_vector3i |
|
class_transform2d |
|
class_vector4 |
|
class_vector4i |
|
class_plane |
|
class_quaternion |
|
3D аналог Rect2 |
|
class_transform3d |
|
class_projection |
|
class_stringname |
|
class_nodepath |
|
class_rid |
|
class_object |
Тип із можливістю нульового значення |
class_signal |
|
class_packedbytearray |
|
class_packedint32array |
|
class_packedint64array |
|
class_packedfloat32array |
|
class_packedfloat64array |
|
class_packedstringarray |
|
class_packedvector2array |
|
class_packedvector3array |
|
class_packedcolorarray |
|
class_packedvector4array |
Контейнери: масив і словник
І Array, і Dictionary реалізовано за допомогою варіантів. Словник може відповідати будь-якому типу даних, який використовується як ключ, до будь-якого іншого типу даних. Масив містить лише масив варіантів. Звичайно, варіант також може містити всередині словник або масив, що робить його ще більш гнучким.
Зміни до контейнера змінять усі посилання на нього. Якщо потрібен багатопотоковий доступ Mutex, слід створити multi-threaded access для його блокування.