Variant Klasse

Über

Variant ist der wichtigste Datentyp von Godot, es ist die wichtigste Klasse in der Engine. Eine Variante benötigt nur 20 Bytes und kann fast jeden Engine-Datentyp darin speichern. Varianten 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 Varianten ausführen (GDScript verwendet Variant als atomaren/nativen Datentyp).

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

  • verwendet werden, um sicher zwischen Datentypen zu konvertieren

  • werden genutzt um aufrufende Methoden und ihre Argumente zu abstrahieren (Godot exportiert alle seine Funktionen über Varianten)

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

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

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

  • Arbeitet wie eine exportierte Eigenschaft, damit der Editor sie universell bearbeiten kann.

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

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 Variant.

Referenzen:

Container: Dictionary und Array

Beide werden mit Varianten implementiert. Ein Dictionary kann jeden Datentyp der als Schlüssel verwendet wird mit jedem anderen Datentyp abgleichen. Ein Array enthält nur ein Feld von Varianten. Natürlich kann ein 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 sperren, wenn ein Multithread-Zugriff gewünscht wird.

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

Referenzen: