Hola, escribo este tema porque queria hacer una pantalla de "debug" en mi juego, y no he visto este problema por el foro, aunque supongo que alguno ya lo habra preguntado.

Quiero que cuando se pulse una tecla ( en mi caso el F3 ) cree un objeto que contiene todo lo que quiero que salga en el debug, pero luego con esta misma tecla quiero que elimine ese objeto. Nose si me explico.

Yo pulso F3, y se crea un objeto que continen un Draw, y ese draw dibuja 3 lineas.
cuando vuelva a pulsar, ese objeto, lo elimino, con lo que desaparecen las lineas.

Alguien me puede ayudar?? Nose si me he explicado bien

Gracias!

¿Lo has intentado hacer de alguna forma y no te funciona, o no tienes la menor idea de cómo hacerlo?


He intendado hacerlo, le he dicho que cuando presione la F3 que me lo cree, pero luego no caigo como hacer que lo quite pulsando la misma tecla.

Tambien he pensado en activarlo y desactivarlo. Me explico, al empezar el juego ya esta creado, pero desactivado, entonces al pulsar la tecla solamente lo activo y lo desactivo.

Tambien he pensado de hacerlo con variables, mi idea era crear una variable

global.debug = false

if ( global.debug = false) {
instance_deactivate_object(obj_debug);
}else{
instance_activate_object ( obj_debug);
}


Algo asi havia pensado, pero no llego a caer con la forma de hacerlo ://

Cita de: chetuu16 en Septiembre 15, 2015, 05:03:12 PM
He intendado hacerlo, le he dicho que cuando presione la F3 que me lo cree, pero luego no caigo como hacer que lo quite pulsando la misma tecla.

Tambien he pensado en activarlo y desactivarlo. Me explico, al empezar el juego ya esta creado, pero desactivado, entonces al pulsar la tecla solamente lo activo y lo desactivo.

Tambien he pensado de hacerlo con variables, mi idea era crear una variable

global.debug = false

if ( global.debug = false) {
instance_deactivate_object(obj_debug);
}else{
instance_activate_object ( obj_debug);
}


Algo asi havia pensado, pero no llego a caer con la forma de hacerlo ://

En vez de estar viendo cada step si la instancia debe activarse o no, lo primero que yo habría tratado de hacer es usar el evento key press F3 en el mismo objeto:

Evento create:
activo=false;

Evento key press F3:
activo=!activo;

Evento draw:
if activo
    {instrucciones para dibujar las líneas}



Otra opción es la siguiente, sin embargo lo que menciona Guacusio me parece mejor.
[gml]
///Evento Game Start
global.debug = false;
instance_create( x,y, obj_debug );
[/gml]
[gml]
///Evento Step
if keyboard_check_pressed( vk_f3 ) //al presionar F3
{
    if( global.debug ) { //si debug está activado
        instance_deactivate_object( obj_debug );
        global.debug = false; //desactivar
    }
    else { //si no está activado
        instance_activate_object( obj_debug );
        global.debug = true; //activar
    }
}
[/gml]
El código debe ir en un objeto diferente a obj_debug.

Si sólo quieres depurar en Windows, puedes usar el debugger integrado en GMS.

Haciendo una optimización, en lugar de crear la variable activo se puede usar la variable visible, que todas las instancias tienen por defecto, entonces se sólo se tiene que poner una línea en el evento Press F3
[gml]
visible = !visible;
[/gml]

Cita de: Clamud en Septiembre 15, 2015, 05:36:22 PM
Otra opción es la siguiente, sin embargo lo que menciona Guacusio me parece mejor.
[gml]
///Evento Game Start
global.debug = false;
instance_create( x,y, obj_debug );
[/gml]
[gml]
///Evento Step
if keyboard_check_pressed( vk_f3 ) //al presionar F3
{
    if( global.debug ) { //si debug está activado
        instance_deactivate_object( obj_debug );
        global.debug = false; //desactivar
    }
    else { //si no está activado
        instance_activate_object( obj_debug );
        global.debug = true; //activar
    }
}
[/gml]
El código debe ir en un objeto diferente a obj_debug.

Si sólo quieres depurar en Windows, puedes usar el debugger integrado en GMS.

Haciendo una optimización, en lugar de crear la variable activo se puede usar la variable visible, que todas las instancias tienen por defecto, entonces se sólo se tiene que poner una línea en el evento Press F3
[gml]
visible = !visible;
[/gml]

Haz lo que dice Clamud, tiene toda la razón.