es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GDNative C – Cómo transferir un arreglo a Godot en lugar de una cadena.

Acabo de revisar el tutorial oficial de ejemplo en C de GDNative en la documentación de Godot, donde el resultado final es transferir una cadena de un programa en C a un programa en GDScript en Godot. ¿Cuál es la mejor manera de pasar una matriz 2D de enteros y flotantes desde el complemento en C a GDScript? Además, ¿cómo sería diferente el código para pasar un array/dictionary en comparación con pasar una cadena?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para pasar una matriz 2D de enteros y flotantes desde un complemento C a GDScript, la forma más eficiente es usar una Extensión GDNative. Esto permite que el complemento C se comunique directamente con el programa GDScript sin intermediarios. Aquí están los pasos a seguir:

    1. Crea un class_name para tu complemento C. Esto te permitirá crear un objeto de esta clase en GDScript.
    2. Crea un register_method en la clase de tu complemento C que tome un VariantArray como parámetro. Este VariantArray representará la matriz 2D que deseas pasar a GDScript.

    3. En el register_method, puedes usar la clase Array de la API de Godot para convertir el VariantArray en una matriz 2D de enteros y flotantes. Aquí tienes un ejemplo de código:

    void MyPlugin::pass_array(VariantArray array) {
        Array gd_array = Array::make(array);
        Array2D<int> int_array = gd_array[0];
        Array2D<float> float_array = gd_array[1];
    }
    
    1. En GDScript, puedes llamar al método pass_array en el objeto del complemento C y pasar la matriz 2D como un VariantArray. Aquí tienes un ejemplo de código:
    var plugin = MyPlugin.new()
    var int_array = [[1, 2, 3], [4, 5, 6]]
    var float_array = [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]
    
    plugin.pass_array([int_array, float_array])
    

    Para pasar un array o un diccionario, el código sería similar a pasar una cadena o una matriz 2D. En el register_method de tu complemento C, aceptarías un parámetro Variant en lugar de un VariantArray. Puedes usar las clases Dictionary o Array de la API de Godot para convertir el Variant en la estructura de datos apropiada. En GDScript, puedes pasar el array o diccionario como un Variant al método del complemento C.

Comments are closed.