Megadok 10 Report post Posted September 24, 2020 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
francoe1 536 Report post Posted September 24, 2020 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
Megadok 10 Report post Posted September 24, 2020 (edited) 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 September 24, 2020 by Megadok Share this post Link to post Share on other sites