Jump to content
Sign in to follow this  
Megadok

Acondicionar OnDisable().

Recommended Posts

Buenas.

Estoy probando OnDisable para que cuando elimine un objeto en el "Editor", el método OnDisable se dispare y haga algo.

    private void OnDisable()
    {
        Debug.Log("haz algo");
    }

El problema que veo, es que OnDisable, no solo se ejecuta cuando el objeto en cuestión es destruido en el editor, si no que, cuando guardo un cambio en mis scripts y el compilador carga, el método OnDisable "se dispara", sin que el objeto haya tenido que destruirse, ejecutando el código correspondiente.

¿Hay alguna manera de que OnDisable no se active cuando se active el compilador?

 

Un saludo.

Share this post


Link to post
Share on other sites

OnDisable se activa por que estás descargando y cargando la escena.

Para detectar la eliminación de un Objeto deberías evaluar el comando del evento actual desde una clase que se ejecute en el editor.

Event.current.commandName == "Delete"

También puedes utilizar la bandera "isEditor" dentro del OnDestroy

private void OnDestroy()
{
	if (Application.isEditor)
		Debug.Log("Lalala");
}

Pero recuerda, una vez llamada la función OnDestroy el objeto se marcó como destruido, esto quiere decir que si intentas acceder a una de sus propiedades obtendrás un error.

Share this post


Link to post
Share on other sites
1 hour ago, francoe1 said:

OnDisable se activa por que estás descargando y cargando la escena.

Para detectar la eliminación de un Objeto deberías evaluar el comando del evento actual desde una clase que se ejecute en el editor.


Event.current.commandName == "Delete"

También puedes utilizar la bandera "isEditor" dentro del OnDestroy


private void OnDestroy()
{
	if (Application.isEditor)
		Debug.Log("Lalala");
}

Pero recuerda, una vez llamada la función OnDestroy el objeto se marcó como destruido, esto quiere decir que si intentas acceder a una de sus propiedades obtendrás un error.

No me funciona, en Gamemaker hay una funcion que se activa cuando un objeto es destruido, y creia que estas funciones OnDisable y OnDestroy funcionaban igual, pero no.

¿No hay algo como...?

"en el propio objeto"
if(this==null){
Debug.Log(hago algo).
}

 

Edited by Megadok

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...