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?
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 objetoenum
. Aquí tienes un ejemplo de cómo usar este método con tu enumeración:En este ejemplo, primero almacenamos el valor de cadena “STRENGTH” en una variable llamada
boost_str
. Luego utilizamos el métodoint_value()
para convertir el valor de enumeración deSTRENGTH
en un número entero que puede ser utilizado como un índice válido en la variablearray
. Por último, imprimimos el elemento en el array correspondiente al índice de la variableboost_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
.