Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Die Klasse "Variant"

Über

Variant ist der wichtigste Datentyp von Godot, es ist die wichtigste Klasse in der Engine. Ein Variant benötigt nur 20 Bytes und kann fast jeden Engine-Datentyp darin speichern. Variants werden selten verwendet, um Informationen über einen längeren Zeitraum zu speichern. Stattdessen werden sie hauptsächlich für die Kommunikation, Bearbeitung, Serialisierung und das allgemeine Verschieben von Daten verwendet.

Ein Variant kann:

  • fast jeden Datentyp speichern

  • Operationen zwischen vielen Variants ausführen (GDScript verwendet Variant als atomaren/nativen Datentyp).

  • gehasht sein, damit sie schnell mit anderen Variants verglichen werden können

  • verwendet werden, um sicher zwischen Datentypen zu konvertieren

  • verwendet werden, um aufrufende Methoden und ihre Argumente zu abstrahieren (Godot exportiert alle seine Funktionen über Variants)

  • verwendet werden, um Anrufe zu verschieben oder Daten zwischen Threads zu verschieben.

  • binär serialisiert und auf der Festplatte gespeichert oder über das Netzwerk übertragen werden.

  • in Text serialisiert und dies zum Ausgeben von Werten und bearbeitbaren Einstellungen verwenden.

  • wie eine exportierte Property arbeiten, damit der Editor sie universell bearbeiten kann.

  • für Dictionaries, Arrays, Parser usw. verwendet werden.

Dank der Variant-Klasse war das Schreiben von Godot selbst eine viel, viel einfachere Aufgabe, da es mit wenig Aufwand hochdynamische Konstrukte ermöglicht, die in C++ nicht üblich sind. Werden Sie noch heute ein Freund von Variants.

Referenzen:

Container: Dictionary und Array

Beide werden mit Variants implementiert. Ein Dictionary kann jeden Datentyp als Schlüssel jedem anderen Datentyp zuordnen. Ein Array enthält lediglich ein Array von Variants. Natürlich kann eine Variant auch ein Dictionary und ein Array enthalten, was es noch flexibler macht.

Durch Änderungen an einem Container werden alle Verweise darauf geändert. Es sollte ein Mutex erstellt werden, um ihn zu locken, wenn ein Multithreading-Zugriff gewünscht wird.

Die Unterstützung des COW-Modus (Copy-on-Write) für Container wurde mit Godot 3.0 eingestellt.

Referenzen: