Aplicación que carga las texturas incorrectas al abrir de nuevo

Estoy desarrollando un juego usando la librería libgdx.

Cuando carga el programa por primera vez, las texturas se cargan perfectamente y todo está bien

Introduzca aquí la descripción de la imagen

Cuando cierro la aplicación, y la carga otra vez (estoy asumiendo que androide está almacenando en cárcel de alguna manera de la memoria) – las texturas incorrectas se cargan.

Introduzca aquí la descripción de la imagen

Si borro el juego de la historia, y vuelvo a intentarlo, funciona perfectamente.

– La forma en que funciona actualmente es la siguiente – Yo uso un SpriteBatch para dibujar el juego real. Tengo separado SpriteBatche s para dibujar el fondo y la interfaz (que están cargando muy bien). Al deshacerse de un nivel, dispongo el SpriteBatch .

 for (Block block : world.getDrawableBlocks(this.width, this.height)) { spriteBatch.draw(block.getTexture(1f), block.getPosition().x, block.getPosition().y, block.SIZE_X, block.SIZE_Y); } 

Las texturas que carga usando un caché me escribí para evitar que la misma imagen se cargue más de una vez. Borrar el caché en la creación de la aplicación. A continuación, mantener una Texture / TextureRegion en el propio objeto, que se obtiene a través de .getTexture()

Y aquí está mi código que utilizo para cargar las texturas

 public static Texture loadTexture(String path) { //Do we have the texture cached? if (textures.containsKey(path)) { //return it return textures.get(path); } else { //load it from the filesystem Texture texture = new Texture(Gdx.files.internal(path)); //cache it textures.put(path, texture); //return it return texture; } } 

Adjunto un depurador y las texturas que se cargan tienen el camino correcto.

En el ejemplo del cuadro, la textura que es intercambiada pasa a ser parte de la fuente, que es nada que sea NUNCA almacenado en mi memoria caché.

Por lo tanto, estoy un poco atrapado aquí.

Ahora mismo estoy usando la solución traviesa de matar el proceso manualmente en disponer:

  @Override public void onDestroy() { super.onDestroy(); this.finish(); android.os.Process.killProcess( android.os.Process.myPid() ); } 

Esto funciona pero es bastante sucio.

Cuando el proceso falla debido a una excepción, el error no se produce.


Supongo que de alguna manera la biblioteca está almacenando en caché sus propias texturas que de alguna manera se están corrompiendo, pero no tengo ni idea de cómo comprobar ni cómo borrarlas.

Entonces, ¿alguna idea?

Debes disponer () todas las texturas que has creado, para textures bucle a través de todo su valor () y disponer de él en un método separado, a continuación, utilizar ese método en la pantalla del juego principal dispose () función.

La textura conmutada parece BitmapFont, y si las texturas de fuente utilizado en la interfaz de usuario, entonces usted puede ser que tenga mal en la escena UI o así, también se carga con el archivo JSON?

Me parece que cuando se cierra el juego su última textura es la textura de la fuente se utiliza, y se llena la textura se utiliza en la escena.

"New Texture", TextureAtlas, BitmapFont, etc se recargan automáticamente después de pausa / reanudar o cuando el contexto de OpenGL se pierde de otra manera.

Supongo que su problema debe estar en la forma de manejar la recarga manual.

Si desea asegurarse de que no se cargue textura más de una vez, utilice AssetManager en su lugar. No hay necesidad de hacer todo eso manualmente.

  • Píxeles a las inmersiones, al escritorio y al android
  • LibGDX en la aplicación de compras y Gradle
  • ¿Cuándo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D en Libgdx?
  • ¿Cómo detectar el número de dedos utilizados?
  • Cómo portar el juego libgdx COMPLETADO de Android a iOS
  • ¿Cómo comprobar la intersección en libgdx?
  • Diferencia entre la etapa y la pantalla de libgdx
  • ¿Cuándo usar actores en libgdx? ¿Cuáles son contras y pros?
  • Cómo comprobar si un cuerpo casi ha dejado de moverse en libgdx + box2d
  • Android no puede abrir archivos con LibGDX
  • GestureDetector en libgdx
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.