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.

Клас 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.

Посилання

Список типів варіантів

Ці типи доступні у варіантах:

Тип

Нотатки

Нуль (може зберігати лише null)

Тип із можливістю нульового значення

bool

int

float

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

AABB

3D аналог Rect2

Basis

class_transform3d

class_projection

Color

class_stringname

class_nodepath

class_rid

class_object

Тип із можливістю нульового значення

Callable

class_signal

Dictionary

Array

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 для його блокування.

Посилання