Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: como pasar el nombre de una variable como parametro de un script  (Leído 971 veces)

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

Desconectado juantrix666

Buenas, estoy haciendo un script en el que se le pasa el nombre del objeto, la variable y el dato a cargar en esa variable, para un sistema de cutscenes. El tema es que no se como referirme a una variable para modificarla si tengo su nombre como string.

"haz lo que te haga feliz pero tendras que afrontar las consecuencias"
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado El bananita

  • Visitante
  • *
  • Puntos: 13
  • Mensajes: 5
    • Ver Perfil
Respuesta #1 en: Abril 11, 2021, 05:35:48 am
Puedes usar la función asset_get_index("nombre del objeto").

Te explico cómo:

var obj = asset_get_index("La variable con el nombre del objeto");

With(obj)
{
}



 


Desconectado BssString

Respuesta #2 en: Abril 11, 2021, 09:41:08 pm
Hola juantrix666

En GM8 se podía usar una "string" para acceder a la variable creo, pero en GM Studio ya no se puede hacer.

Deberías pensar en un sistema diferente, tal vez utilizando arrays en el objeto original y pasarle el array y la posición que vas a editar al script (en vez del nombre de la variable) y que el script edite el array en el objeto original. Un script sólo puede modificar el array original usando el accesor de los arrays que es el signo "@".
Aquí puedes encontrar más información sobre eso:
https://docs2.yoyogames.com/source/_build/3_scripting/3_gml_overview/13_accessors.html

También los scripts pueden operar como "funciones" si usas el comando "return", así que otra opción es que tu script sea un cálculo, pero no modifique ninguna variable, sino que retorne un nuevo valor para usarlo después.

Ejemplo, si creo un script llamado "doble" que me duplica el valor del número que le paso como argumento:

///doble(numero)
return argument0 * 2

Y luego en mi objeto uso:
var num = 1
num = doble(num)

Ahora mi variable "num" alojará el número 2 porque aplicó el cálculo del script y el script retornó un nuevo valor que luego se lo asigné a la variable.

Saludos

 


Desconectado juantrix666

Respuesta #3 en: Abril 13, 2021, 11:45:19 pm
mmmm ya se complica de mas, supongo que tendre que hacerlo manual porque el sistema que hice no podria funcionar sino, pero lo voy a tener en cuenta para la proxima, gracias.

"haz lo que te haga feliz pero tendras que afrontar las consecuencias"
 


Desconectado Void

Respuesta #4 en: Abril 14, 2021, 01:52:35 am
La función variable_instance_set puede modificar variables de objetos cuyo nombre se pasa como string, buscala en el manual.