Autor Tema: Colocarle una id a mi objeto  (Leído 69 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado HKaichim

Colocarle una id a mi objeto
« en: Septiembre 14, 2018, 03:30:15 am »
Muy buenas amigos tengo una duda, se puede crear un "id" en especial para un objeto y que este incremente o cambie al estar en el mapa? Ejemplo Obj1 = id, si este objeto esta en el mapa sera = 1, pero si coloco dos del mismo objetivo su id sera = 2 "no se si me hice entender"?


 
No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado CrashKen

Re:Colocarle una id a mi objeto
« Respuesta #1 en: Septiembre 14, 2018, 03:50:10 am »
Muy buenas amigos tengo una duda, se puede crear un "id" en especial para un objeto y que este incremente o cambie al estar en el mapa? Ejemplo Obj1 = id, si este objeto esta en el mapa sera = 1, pero si coloco dos del mismo objetivo su id sera = 2 "no se si me hice entender"?

por default todos los objetos de game maker tienen id, es una variable cuyo nombre justamente es "id"

pero si queires crear tu propio sistema de ids es sencillo.
crea un objeto principal que sera el encargado de crear los objetos que tengan id
en el evento create del objeto principal por algo como
Código: [Seleccionar]
contador = 0;
luego cuando creas un objeto nuevo que tenga que tener id, crealo desde el objeto principal y haz algo como esto
Código: [Seleccionar]
objetoNuevo = instance_create(x,y,elobjetoconid);
objetoNuevo.identificador = contador;//a partir de ahora identificaras al objeto con esta variable llamada identificador
contador++//esto simplemente aumenta el numero del contador, para tener un id diferente cada vez que se crea un nuevo objeto
« última modificación: Septiembre 14, 2018, 03:51:42 am por CrashKen »
Gracias Jhony por prestarme tu nick
 
Los siguientes usuarios dieron las gracias a este tema: HKaichim


Desconectado HKaichim

Re:Colocarle una id a mi objeto
« Respuesta #2 en: Septiembre 14, 2018, 04:03:59 am »
Muy buenas amigos tengo una duda, se puede crear un "id" en especial para un objeto y que este incremente o cambie al estar en el mapa? Ejemplo Obj1 = id, si este objeto esta en el mapa sera = 1, pero si coloco dos del mismo objetivo su id sera = 2 "no se si me hice entender"?

por default todos los objetos de game maker tienen id, es una variable cuyo nombre justamente es "id"

pero si queires crear tu propio sistema de ids es sencillo.
crea un objeto principal que sera el encargado de crear los objetos que tengan id
en el evento create del objeto principal por algo como
Código: [Seleccionar]
contador = 0;
luego cuando creas un objeto nuevo que tenga que tener id, crealo desde el objeto principal y haz algo como esto
Código: [Seleccionar]
objetoNuevo = instance_create(x,y,elobjetoconid);
objetoNuevo.identificador = contador;//a partir de ahora identificaras al objeto con esta variable llamada identificador
contador++//esto simplemente aumenta el numero del contador, para tener un id diferente cada vez que se crea un nuevo objeto
No entendi muy bien como hacerlo me podrias dras un ejemplo basico pliz?
ya que estoy algo enredado en la parte de "contador++"

Desconectado BssString

Re:Colocarle una id a mi objeto
« Respuesta #3 en: Septiembre 14, 2018, 05:10:12 am »
Hola HKaichim

Si es posible y es bastante útil. En general hay muchas formas de hacerlo. Te comento mis dos favoritas:

Forma manual:
En el editor de rooms de Game Maker, puedes hacer clic secundario y seleccionar "creation code". Ahí te permite crear un bloque de código específico para esa instance en particular. Este "creation code" ocurrirá después de su "Create Event" normal, así que cuidado con el orden en que asignas y revisas las variables, desde el "Create Event" normal no podrás conocer la variable que asignaste en el creation code del objeto hasta que llegas al Step Event.

Forma automática:
Si tienes un objeto único (ejemplo: un objeto control) que se crea antes que los demás objetos de la room, le puedes asignar una variable como por ejemplo "contador = 0".
En el "Create Event" de tus objetos, haces simplemente:
Código: [Seleccionar]
my_id = obj_control.contador
obj_control.contador += 1
Eso hará que cada objeto tome como ID el valor actual de contador y le sume uno para que después venga el objeto que sigue a hacer el checkeo y reciba un id diferente.
Como alternativa, puedes reemplazar la variable en el objeto control por una variable global.
Si vas a "rooms" > "settings" > "instance_order" puedes cambiar el orden en el que se crean los objetos para que tu variable "contador" se declare antes de que hagas el check.

Saludos
« última modificación: Septiembre 14, 2018, 05:17:49 am por BssString »
 
Los siguientes usuarios dieron las gracias a este tema: HKaichim

Desconectado CrashKen

Re:Colocarle una id a mi objeto
« Respuesta #4 en: Septiembre 14, 2018, 05:14:24 am »
Hola HKaichim

Si es posible y es bastante útil. En general hay muchas formas de hacerlo. Te comento mis dos favoritas:

Forma manual:
En el editor de rooms de Game Maker, puedes hacer clic secundario y seleccionar "creation code". Ahí te permite crear un bloque de código específico para esa instance en particular. Este "creation code" ocurrirá después de su "Create Event" normal, así que cuidado con el orden en que asignas y revisas las variables, desde el "Create Event" normal no podrás conocer la variable que asignaste en el creation code del objeto hasta que llegas al Step Event.

Forma automática:
Si tienes un objeto único (ejemplo: un objeto control) que se crea antes que los demás objetos de la room, le puedes asignar una variable como por ejemplo "contador = 0".
En el "Create Event" de tus objetos, haces simplemente:
Código: [Seleccionar]
my_id = obj_control.contador
obj_control.contador += 1
Eso hará que cada objeto tome como ID el valor actual de contador y le sume uno para que después venga el objeto que sigue a hacer el checkeo y reciba un id diferente.
Como alternativa, puedes reemplazar la variable en el objeto control por una variable global.

Saludos

no lo pudo explicar mejor, y es cierto que es mas facil tener una variable global que un obj de control

lo de contador++ que puse arriba es lo mismo que poner "contador += 1" o "contador = contador + 1"
lo unico que hace es sumarle un 1 a la variable
Gracias Jhony por prestarme tu nick
 
Los siguientes usuarios dieron las gracias a este tema: HKaichim