Hola a todos,
Estoy trabajando en un pequeño proyecto en el que genero gatos (TokenCat) usando una función que recibe estos parámetros:
in_rol(texto) → el nombre del rol (por ejemplo"tank")out_obj(objeto) → la instancia del gato que quiero completarroles(estructura) → una variable con todos los datos de los rolesnextId(número) → contador de identificadorestxt_debug(objeto) → un texto para depuración
Todo funciona excepto una cosa:
Dentro de la función puedo leer perfectamente la estructura (por ejemplo rolesRef.tank.color devuelve "naranja"),
pero cuando escribo los valores en el objeto todos aparecen como 0 en el texto de debug.
Ejemplo del texto de depuración después de crear el gato:
id=c1 | rol=0 | color=0 | V:0 A:0 S:0 | hab=0
Sin embargo, dentro de la misma función, si hago
VariableString(rolesRef.tank.color)
sí me muestra "naranja" correctamente.
Este es un resumen del bloque dentro de la función:
CopyArgumentToVariable2("roles", rolesRef)
CopyArgumentToVariable2("nextId", tmpNextId)
tmpRole = VariableString(in_rol)
vmin = Variable(rolesRef[VariableString(tmpRole)].vida[0])
vmax = Variable(rolesRef[VariableString(tmpRole)].vida[1])
tmpColor = VariableString(rolesRef[VariableString(tmpRole)].color)
tmpHab = VariableString(rolesRef[VariableString(tmpRole)].hab)
vida = floor(RandomInRange(Variable(vmin), Variable(vmax)))
out_obj id = "c" + ToString(Variable(tmpNextId))
out_obj rol = tmpRole
out_obj color = tmpColor
out_obj vida = vida
out_obj hab = tmpHab
No da errores, pero todos los valores (excepto el id que aparece como c1 y es correcto) aparecen como 0.
He comprobado lo siguiente:
* La estructura rolesRef es correcta (puedo imprimir cualquier campo y sale bien).
* La función se llama dentro de un For each TokenCat.
* Los parámetros se pasan en el orden correcto.
¿Podría ser un problema de tipo o de alcance al asignar las variables dentro de la función?
Cualquier aclaración o idea sobre cómo GDevelop maneja las variables de objeto dentro de funciones sería muy agradecido 🙏


