Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Algodoncito en Febrero 21, 2016, 01:43:12 AM

Título: [RESUELTO] Variables de objetos
Publicado por: Algodoncito en Febrero 21, 2016, 01:43:12 AM
Buenas chicos, vengo aquí denuevo porque tengo unos problemillas con algunas variables en objetos.
Veran, para simplificarles un poco las cosas, el problema es el siguiente...
Tengo un objeto jugador y un objeto enemigo.
Cada uno, en un evento create, les puse una variable vida y danio.
Como notaran ambos tienen las mismas variables, y para llarmarlas en las distintas "instancias" que sea necesario utilizo Obj_Jugador.vida, Obj_Enemigo.vida, etc , etc... con cada variable que utilizo.
Al principio no tenía problemas, pero ahora que tengo mas variables (como vida actual, atacar, etc ) me salta un error que dice "variable desconocida" (refiriendose a la vida o al danio), siendo que son las mismas variables que he utilizado desde el comienzo y que antes compilaban sin problemas...
Entonces mi duda es si se debe a que se llaman igual y, como ahora tengo mas variables, quizá el GM tiene errores de lectura (o algo asi) o si se debe a alguna otra cosa... Cabe destacar que soy de los que trata de hacer todo en "codigo" y no sé si eso tambien pueda afectar a esto de las variables...
Alguien sabe a que se debe? o si estoy haciendo algo mal... algun consejo, algo?
Gracias de antemano <3.
Título: Re:Variables de objetos
Publicado por: bygdle en Febrero 21, 2016, 02:00:30 AM
Las variables locales son creadas por separado en cada instancia. Esto quiere decir que si, por ejemplo, tienes 10 instancias de un objeto, cada una de estas instancias tendrá sus propias variables, que interactuan independientes de las demás instancias del mismo objeto.
Por ejemplo, si tienes un objeto con las variables "vida" y "danio", la forma de acceder a ellas es la siguiente:
[gml]
objeto.variable
[/gml]

Toda instancia tiene una id, que es un número identificador único que apunta sólo a esa instancia, y no al objeto. Esto es muy útil ya que si tienes varias instancias de un mismo objeto, el método anterior podría fallar; no sé cómo ya que nunca he usado mucho esta forma, y por lo tanto no he comprobado casi nada.
Por ejemplo, si tienes 3 instancias, con las id "100302", "3001012" y "422010", siendo todas instancias de un mismo objeto, la forma de acceder a cada una de ellas es la siguiente:
[gml]
(id).variable
[/gml]
Por ejemplo:
[gml]
(100302).danio += 1;
[/gml]
Esto va a sumar 1 a la variable danio de la instancia con la id 100302.

Existen muchas funciones que devuelven la id de una instancia que es procesada por las mismas. Algunos ejemplos son instance_create(), que devuelve la id de la instancia creada, y las collision_(), que son funciones que devuelven la id de la instancia que colisiona con el rango argumentado.
for exampol:
[gml]
objeto_creado = instance_create(x,y,objeto);
objeto_creado.danio = 10;
[/gml]
En el anterior ejemplo se crea una instancia de "objeto", y se le asigna a la misma el valor de 10 a la variable "danio"

Más no te puedo ayudar puesto que soy bien retrasado y no entiendo bien tu problema xDDD
Título: Re:Variables de objetos
Publicado por: jmbs19 en Febrero 21, 2016, 03:08:32 AM
si te dice "variable desconocida" es porque no se a creado esa variable, asi de facil, no se si vienes de php, donde se puede llamar una variable sin haber sido declarada dando como resultado null, pero en  :GMS: y  :GM8: y en todos los demas tienes que, si o si, declarar la variable antes de llamarla para cualquier tipo de comprobacion o operacion matematica. esto normalmente se hace en el create de tus objetos.
Título: Re:Variables de objetos
Publicado por: Algodoncito en Febrero 21, 2016, 10:25:43 PM
Vale chicos, logré solucionar el problema.
Se aprecia la infromación entregada <3.
(en especial la de las ID's ))