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.

Cómo convertir una cadena a un enumerador en Godot?

Usando Godot 3.4, tengo un enum configurado de la siguiente manera:

enum {
    STRENGTH, DEXTERITY, CONSTITUTION, INTELLIGENCE, WISDOM, CHARISMA
}

Y me gustaría poder hacer que la cadena “STRENGTH” devuelva el valor del enum (0). Me gustaría que el siguiente código imprima el primer elemento del array, pero actualmente presenta un error que indica que STRENGTH es un índice no válido.

boost = "STRENGTH"
print(array[boost])

¿Estoy haciendo algo mal o existe alguna función para convertir una cadena en algo que pueda ser reconocido como un enum?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a un valor de enumeración a través de una cadena en Godot 3.4, puedes utilizar el método int_value() del objeto enum. Aquí tienes un ejemplo de cómo usar este método con tu enumeración:

    enum {
        STRENGTH, DEXTERITY, CONSTITUTION, INTELLIGENCE, WISDOM, CHARISMA
    }
    
    var boost_str = "STRENGTH"
    var boost_enum = STRENGTH.int_value()
    
    print(array[boost_enum])
    

    En este ejemplo, primero almacenamos el valor de cadena “STRENGTH” en una variable llamada boost_str. Luego utilizamos el método int_value() para convertir el valor de enumeración de STRENGTH en un número entero que puede ser utilizado como un índice válido en la variable array. Por último, imprimimos el elemento en el array correspondiente al índice de la variable boost_enum.

    Esto debería imprimir el primer elemento en el array, que corresponde al valor STRENGTH de la enumeración.

    Ten en cuenta que el método int_value() solo funciona si la cadena coincide exactamente con uno de los valores de la enumeración. Si la cadena contiene un error tipográfico o no es un valor de enumeración válido, el método devolverá -1.

Comments are closed.