Up to date

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

Clase variant

Acerca de

La variante (variant) es el tipo de datos más importante de Godot, es la clase más importante del motor. Una variante ocupa solo 20 bytes y puede almacenar casi cualquier tipo de datos del motor dentro de ella. Las variantes rara vez se utilizan para almacenar información durante largos períodos de tiempo, sino que se utilizan principalmente para la comunicación, la edición, la serialización y, en general, el movimiento de datos.

Una variante puede:

  • Almacenar casi cualquier tipo de dato

  • Realiza operaciones entre muchas variantes (GDScript utiliza Variant como su tipo de dato atómico/nativo).

  • Ser hasheado, de modo que pueda compararse rápidamente con otras variantes

  • Es utilizado para convertir de forma segura entre tipos de datos

  • Es utilizado para abstraer métodos de llamada y sus argumentos (Godot exporta todas sus funciones a través de variantes)

  • Se usa para aplazar llamadas o mover datos entre hilos.

  • Es serializado como binario y almacenado en disco, o transferido a través de la red.

  • Puede ser serializado a texto y utilizado para imprimir valores y configuraciones editables.

  • Funciona como una propiedad exportada, por lo que el editor puede editarla universalmente.

  • Puede ser utilizado para diccionarios, arreglos, analizadores, etc.

Básicamente, gracias a la clase Variant, escribir Godot en sí fue una tarea mucho, mucho más fácil, ya que permite construcciones altamente dinámicas que no son comunes en C++ con poco esfuerzo. Conviértete en amigo de Variant hoy mismo.

Referencias:

Contenedores: Diccionario y Arreglo

Ambos están implementados usando variantes. Un Diccionario puede asociar cualquier tipo de dato utilizado como clave con cualquier otro tipo de dato. Un Arreglo simplemente contiene una serie de Variantes. Por supuesto, una Variante también puede contener un Diccionario y un Arreglo dentro de ella, lo que la hace aún más flexible.

Las modificaciones a un container modificarán todas las referencias al mismo. Se debe crear un Mutex para bloquearlo si se desea un acceso multihilo.

Desde Godot 3.0, no permite el modo Copy-on-write (COW) para containers.

Referencias: