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

String

Vector2

Vector2i

Rect2

2D аналог AABB

Rect2i

Vector3

Vector3i

Transform2D

Vector4

Vector4i

Plane

Quaternion

AABB

3D аналог Rect2

Basis

Transform3D

Projection

Color

StringName

NodePath

RID

Object

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

Callable

Signal

Dictionary

Array

PackedByteArray

PackedInt32Array

PackedInt64Array

PackedFloat32Array

PackedFloat64Array

PackedStringArray

PackedVector2Array

PackedVector3Array

PackedColorArray

PackedVector4Array

Контейнери: масив і словник

І Array, і Dictionary реалізовано за допомогою варіантів. Словник може відповідати будь-якому типу даних, який використовується як ключ, до будь-якого іншого типу даних. Масив містить лише масив варіантів. Звичайно, варіант також може містити всередині словник або масив, що робить його ще більш гнучким.

Зміни в контейнері змінять усі посилання на нього. Необхідно створити Mutex, щоб заблокувати його, якщо потрібен multi-threaded access.

Посилання