FANDOM


Aquí usted puede encontrar varios métodos para hacer frente a las variables en otras instancias. Editar

En las secciones dedicadas de variables que vimos anteriormente vimos como crear y usarlas dentro de una unica instancia , o en un ambito global , pero ¿que pasa si quieres acceder a alguna variable de otra instancia? Hay muchos casos en los que es posible que desee hacer esto, por ejemplo en caso de colision con un objeto bala, es posible que desee saber cuanto daño hace la bala mediante el acceso a una variable en la bala, o es posible que desee mover al personaje principal a una posicion en particular, o cualquier numero de otras situaciones que normalmente encuentras en cualquier juego. Afortunadamente el lenguaje GameMaker viene equipado con mecanismos para lograr esto. Uno de los metodos mas comunes para acceder o cambiar una variable en otra instancia es utilizar su nombre de objeto como un identificador y luego usar un punto "." para decirle a Gamemaker que la variable utilizada despues se va a asignar o cambiar en ese objeto. En la practica, se veria asi :

0 | oPelota.speed=0;

Con el codigo anterior se esta ajustando la velocidad de una instancia de "oPelota". Sin embargo, si usted tiene mas de una instancia del objeto dado en la habitacion, no hay manera de que Gamemaker : Estudio pueda saber a cual de ellos se refiere, y que se "elige" uno de los que estan disponibles (si es necesario el acceso a todas las instancias de un objeto, se debe utilizar with). En general, este formato solo se debe utilizar cuando se tiene una unica instancia del objeto en la habitacion. Tambien puede acceder a una sola instancia de un objeto cuando hay varias exactamente que deseemos abordar El ID de instancia es el numero unico de identificacion que se da a todos y cada instancia creada en su juego. Cuando usted pone los objetos en una habitacion en el editor de habitacion, este ID de instancia se muestra en la parte inferior de la pantalla cuando se pasa el cursor del raton sobre la instancia, pero incluso si se crea una instancia a traves del codigo que todavia tiene su numero de identificacion unico. Estos numeros son siempre mayor o igual a 100.000, y un numero tales tambien se pueden utilizar como el lado a mano izquerda del punto.

Nota: El punto conseguira interpretar como el punto decimal en un numero real, normalmente, por lo que, para evitar esto, ponga entre parentesis alrededor de ella!

El codigo siguiente es un ejemplo de como debe escribirse:

0 | (100012).velocidad=0;

Tenga en cuenta que no puede utilizar el especial de la palabra clave "all" con este metodo para dirigirse a todos los casos, pero puede utilizar las palabras clave "other" y "self" y sin problemas. Tambien puede utilizar las variables, siempre y cuando la variable en cuestion ha almacenado una ID de instancia valido. Los siguiente ejemplos ilustran esto ... Uso de una variable para establecer un valor de ejemplo:

0 | inst var=instance_position(mouse_x,mouse_y,all);
1 | if instance_exists(inst) {
2 | inst.speed=0;
3 | }

Tenga en cuenta que el codigo anterior tiene un instance_exists() de llamada en el bloque de codigo. Este metodo se debe usar de punto de acceso o al cambiar algun otro valor de instancias dara un error y puede crachear el juego si no existe tal instancia. Por lo tanto, si hay la posibilidad de que la instancia pueda ser destruida, desactivarlo, o de baja durante el uso de este metodo, usted debe comprobar siempre antes de la mano. Todas estas son formas perfectamente validad de lectura, al cambiar y ajustar las variable en otras instancias, y trabajar, por que el punto es en realidad un operador. Todos los nombres de objetos, constantes, identificadores, etc.. simplemente representan valores y estos pueden ser tratador como cualquier otro valor.