Primero, Texture vs TextureRegion: cuando haces algo como Texture t = new Texture (path), estás cargando eso en la GPU. Además, debe cargar la potencia de 2 texturas. Podría trabajar con otras resoluciones (Texture.setEnforcePotImages = false), pero se recomienda usar pow de 2.
Ahora, TextureRegion, toma una "pieza" de una textura, sin importar su dimensión. La ventaja de tener una textura y múltiples regiones de textura de esa textura es que NO está cargando todas las regiones en la GPU.
Como puede estar pensando, cuando desea dibujar con SpriteBatch, es mucho más eficiente usar TextureRegion en lugar de múltiples Texturas, lo siento, mi inglés no es lo suficientemente bueno. Aquí hay una buena explicación: Textures TextureRegion y SpriteBatch
Ahora, desea utilizar TextureRegion y una sola imagen en potencia de resolución 2 con todas las hojas de sprites e imágenes. ¿Tienes que crear TextureRegions con todas las coordenadas y dimensiones? ¿Necesitas abrir paint para contar píxeles? Noooo, no lo haces. Puedes usar algo como TexturePacker . Empacará cada textura en una imagen Y creará un archivo .pack con dimensiones y coordenadas de todas ellas.
El resultado será algo como esto:
En lugar de crear una Textura, cree un TextureAtlas, como este:
Ahora, crear tus TextureRegions sería tan simple como:
(Tenga en cuenta que el nombre de la región es el nombre de la imagen original sin la extensión).
Sprite contiene la información de geometría, color y textura para dibujar sprites 2D usando Batch. Esto significa que puede rotarlos y moverlos fácilmente. He creado mi propia clase Entity, y no necesito la clase Sprite. Probablemente harías lo mismo. No encuentro esta clase realmente útil.
La clase de imagen hereda del actor. Esto significa que puede agregarlo a una etapa. Es parte del paquete Scene2D. Si es nuevo en libgdx y no conoce este paquete, esta información es suficiente para usted sobre esta clase. Es un tema realmente interesante, pero no responde en esta pregunta.
Espero eso ayude :)