Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Braxpok en Enero 02, 2014, 06:54:38 PM

Título: [Duda] Como llamo una variable de un script
Publicado por: Braxpok en Enero 02, 2014, 06:54:38 PM
Hola a todos, intentando crear un juego, me puse a practicar con los scripts para llamarlos desde los objetos, pero no puedo.
Lo que hago es crear el script con variables y lo que necesito es llamar una variable de ese script para un objeto, pero me sale un error: algo de argument y asi, no se que significa.
Entonces:
¿Como le hago para llamar una variable de un script, sin que me de error?
Gracias a todos.
Título: Re:[Duda] Como llamo una variable de un script
Publicado por: penumbra en Enero 02, 2014, 09:31:54 PM
De lo que he leído y alcanzé a entender (espero que bien), las variables declaradas en un script (mediante var) no están disponibles fuera de él, ni para la instancia que lo llamó, ni para nada más. En cuanto se termina de ejecutar el script, son eliminadas.

Creo que necesitarás usar la instrucción return para que el script devuelva el valor que te interesa, si es más de un valor,  puedes usar una lista para guardar varios valores y usar return para devolver esa lista.

Si no quieres usar return, la variable o variables que te interesen leer tras terminar el script, debes sacarlas del mismo y declararlas en algun objeto o incluso declararlas globales.
Título: Re:[Duda] Como llamo una variable de un script
Publicado por: Mega G en Enero 02, 2014, 09:50:00 PM
Penumbra tiene razón con las variables declaradas mediante "var", pero en un script también puedes declarar variables directamente y el objeto que llame ese script se apropiará de dichas variables. Así no hace falta crear listas para la instrucción "return" en caso de que sean varias variables, ni hará falta hacerlas globales.

Por ejemplo, haces el script (vamos a llamarle stats ):

vidas=100
ataque=12
defensa=9


Y luego en el objeto del personaje, en el evento <Create> ponemos:

stats()

Se le pondrán directamente las vidas, ataque, y defensa.

Espero que te sirva!