Método genérico para eliminar objetos en Unity

Hay tareas simples que dependiendo de si se está ejecutando la aplicación en el Editor o fuera de este, se han de hacer de una u otra manera y es fácil llegar a pasarlo por alto en algún punto y llevarse un pequeño susto innecesario.

Eliminar objetos en Unity es una de esas acciones y ya no solo es que dependa de estar o no en el Editor, sino también en si se está ejecutando o no el juego en ese instante.

public static void Remove ( GameObject p_obj )
{
  #if UNITY_EDITOR
    if ( Application.isPlaying )
      GameObject.Destroy( p_obj );
    else
      GameObject.DestroyImmediate( p_obj );
  #else
    GameObject.Destroy ( p_obj );
  #endif
}

Como se indica en la propia documentación oficial de Unity..
«This function ( DestroyImmediate ) should only be used when writing editor code since the delayed destruction will never be invoked in edit mode. In game code you should use Object.Destroy instead«

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *