Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marth en Agosto 10, 2014, 05:05:19 PM

Título: Paso por referencia [Cerrado]
Publicado por: Marth en Agosto 10, 2014, 05:05:19 PM
Necesito saber si es posible relacionar 2 variables por paso por referencia como en el lenguaje C.
Es decir, podría por ejemplo hacer usar de puntero una variable de un objeto que apunte a la variable global score y si modifico una de esas 2 variables la otra igualara su valor automáticamente, sin tener que poner algo como "f=score".
Título: Re:Paso por referencia
Publicado por: Guacusio en Agosto 10, 2014, 10:08:12 PM
GML no permite el uso de punteros a variables. Si explicas un poco más el asunto podemos ver una manera de hacer lo que necesitas más eficientemente.
Título: Re:Paso por referencia
Publicado por: Marth en Agosto 10, 2014, 11:18:18 PM
Preguntaba solo por curiosidad.
Me refiero más bien a hacer "pasos por referencia" con scripts, por ejemplo, en un script "argument0" toma la coordenada X del objeto, pues hago que sea pasado como un puntero y si en el script modifico argument0, la coordenada X también se modificara.
Título: Re:Paso por referencia
Publicado por: arcanite24 en Agosto 11, 2014, 12:19:39 AM
Pues colocalo en el Evento STEP, pero porque no nos muestras tu codigo y que es lo que concretamente quieres lograr.
Título: Re:Paso por referencia
Publicado por: Marth en Agosto 11, 2014, 01:11:12 AM
No tengo un código, es una suposición: un script que toma como "argument0" la coordenada X de un objeto. En teoría modificar argument0 no varia a X, ¿pero habría alguna forma de hacer puntero y que si modifico argument0 modifique también la coordenada X?
Título: Re:Paso por referencia
Publicado por: Guacusio en Agosto 11, 2014, 02:45:49 AM
No se puede, pero me cuesta imaginar un caso en que se necesite hacer eso, considerando que en GML puedes manipular la variable que quieras directamente. Con tu mismo ejemplo, para manipular la variable x de una instancia se puede entregar como argumento a un script la id de la instancia y con ello manipular su coordenada x directamente. Por ejemplo, un script para mantener centrada una instancia en el view:

en evento step:
scr_centrar(id);

script scr_centrar:
//centra la instancia argument0 en el view
argument0.x=view_xview[0]+view_wview[0]/2;
argument0.y=view_yview[0]+view_hview[0]/2;


Título: Re:Paso por referencia
Publicado por: Marth en Agosto 11, 2014, 09:10:45 PM
Gracias por la respuesta.
Lo de id me suena de haberlo utilizado en otros scripts para pasarle a un objeto recién creado variables.
Pero entonces la cosa es que no se puede hacer punteros, así que voy a cerrar este foro.