My understanding is that you initialize the AssetManager as a non-static object in your main class and load the sprites you need...

    manager = new AssetManager();
    manager.load("sprite_sheet.txt", TextureAtlas.class);

I then modified my abstract State class by adding AssetManager to the constructor...

 State(GameStateManager gsm, AssetManager manager) {
    this.gsm = gsm;
    this.manager = manager;

Now say I have 5 blocks in my sprite sheet called block0, block1... block5 would it be appropriate to create a BlockTextures class like this?

private static TextureAtlas textureAtlas;

public BlockTextures(AssetManager manager) {
    textureAtlas = manager.get("sprite_sheet.txt", TextureAtlas.class);

public static AtlasRegion get(int id) {
    return textureAtlas.findRegion("block" + id);

public static void dispose() {

Where I call BlockTextures.dispose() in my Game.dispose() method?

public void dispose() {

While this code seems to work fine I feel like I am not using AssetManager correctly.


1 Answer 1


While you certainly can do what you're doing I would suggest that you pass your AssetManager around yo the classes that need to load resources instead. So instead of doing BlockTextures.get(id); where you need to use the texture you should instead pass the AssetManager and do

// Store this variable 
TextureAtlas atlas = manager.get(name, TextureAtlas.class);

//Use the Atlas later as you would normally

It is also crucial that you don't dispose individual assets using their dispose method. Instead dispose of the AssetManager or use the unload method of the AssetManager to unload a specific resource.

You can read more on AssetManager on the wiki.

  • \$\begingroup\$ If I get a Texture from an TextureAtlas which I got from AssetManager I don't dispose of the Texture even though it's twice removed from the AssetManager? \$\endgroup\$
    – java
    Jun 12, 2017 at 21:43
  • \$\begingroup\$ @java You either call manager.unload(resource) or manager.dispose(). You never call dispose on the actual resource. \$\endgroup\$
    – Charanor
    Jun 12, 2017 at 23:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .