在libgdx中使用AssetManager类

时间:2014-03-22 20:55:22

标签: java android libgdx

我正在使用libgdx开发平台游戏。 我刚开始使用AssetManager类。我的游戏有一个BaseLevel类,所有其他级别都从它扩展。还有一个为BaseLevel加载所有东西的类,在用户完成第一级之后,他将进入下一级别,依此类推。在我游戏的所有关卡中,玩家,硬币和敌人都使用相同的纹理。

所以我的问题是:我是否需要在关卡的每个开始使用我的加载屏幕并在隐藏每个关卡时删除所有内容?或者我只需要使用已加载的所有纹理而不删除它们?

这就是我加载所有地图集和纹理的方法:

     //Atlases
     game.manager.load("ui/buttonright.pack", TextureAtlas.class);
     game.manager.load("ui/buttonleft2.pack", TextureAtlas.class);
     game.manager.load("ui/jumpbutton.pack", TextureAtlas.class);
     game.manager.load("ui/nextlevel.pack", TextureAtlas.class);
     game.manager.load("ui/menupack.pack", TextureAtlas.class);
     game.manager.load("ui/pausebutton.pack", TextureAtlas.class);
     game.manager.load("ui/resumepack.pack", TextureAtlas.class);
     game.manager.load("ui/restartpack.pack", TextureAtlas.class);


     //Textures
     game.manager.load("img/background2.png", Texture.class);
     game.manager.load("img/background2up.png", Texture.class);

我在所有关卡中都使用了所有纹理和atlasses,我需要在关卡完成后从AssetMenager类中删除它们吗?

2 个答案:

答案 0 :(得分:1)

没有。如果资产由您不需要卸载的级别共享。如果要卸载它们,则应首先加载新级别的所有资产,然后卸载旧级别的资产。 AssetManager确实引用计数,因此两个级别使用的任何资产都将保持加载状态(仅当您加载new,然后按此顺序卸载旧的时候)。

我看到你有一个叫resumepack.packrestartpack.pack的东西。如果在应用程序从暂停状态返回时使用其中任何一个创建重新加载类型屏幕,您可能希望避免使用AssetManager。如果您恢复/重新加载屏幕仅使用传统的托管资源,那么您可以使用这些资源在您恢复时显示进度条或类似内容(假设您使用了Texture.setAssetManager(manager);)。

答案 1 :(得分:0)

卸载所有纹理和地图集只需使用

 game.manager.unload("ui/buttonright.pack");
 game.manager.unload("img/background2up.png");

等等

有关AssetManager的更多信息,请使用此链接AssetManager