我正在使用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);
我在所有关卡中都使用了所有这些纹理和地图集,在关卡完成时是否需要将它们从AssetMenager类中删除?
最佳答案
否。如果资产是按级别共享的,则无需卸载它们。如果要卸载它们,则应首先加载新级别的所有资产,然后卸载旧级别的资产。 AssetManager会进行引用计数,因此两个级别使用的任何资产都将保持加载状态(仅当您按此顺序加载新资产然后卸载旧资产时)。
我看到您有一个名为resumepack.pack
和restartpack.pack
的东西。如果您的应用程序从暂停中返回时,如果使用这些方法之一来创建重新加载类型的屏幕,则可能要避免为其使用AssetManager。如果恢复/重新加载屏幕仅使用传统的托管资源,则可以在恢复时使用这些资源显示进度条或类似内容(假设您使用的是Texture.setAssetManager(manager);
)。
关于java - 在libgdx中使用AssetManager类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22583471/