两个版本都可以工作,但我不确定要使用哪一个版本以及为什么要使用该版本?如果您已经卸载资产,您是否需要处置TextureAtlas?AssetManager - 使用哪一个
版本1:与png一起加载包文件(包含位置数据的TexturePacker文件)。
gameSpriteSheet = new TextureAtlas(Gdx.files.internal(DATA_DIR_PATH + "GameSpritesPack.txt"));
assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");
assetManager.load(DATA_DIR_PATH + "GameSpritesPack.png");
// Call only if assetmanager's update method returns true
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);
要卸载:
if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.txt");
}
if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.png")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.png");
}
if(gameSpriteSheet != null) {
gameSpriteSheet.dispose();
}
版本2:只载入包文件(带有位置数据TexturePacker文件)。
assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");
// Call only if assetmanager's update method returns true
gameSpriteSheet = assetManager.get(DATA_DIR_PATH + "GameSpritesPack.txt", TextureAtlas.class);
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);
要卸载:
if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) {
assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.txt");
}
if(gameSpriteSheet != null) {
gameSpriteSheet.dispose();
}
注:我看过马里奥对AssetManager和其他博客文章,但我似乎并没有得到为什么这两个版本以上做工精细。
谢谢。所以,当我加载包文件(在这种情况下为.txt)时,它会自动加载与之关联的.png文件?最后,我在线程中有一个问题,您可能错过了,即使我将资产置于第二个版本中,是否仍然必须处理spritesheet(TextureAtlas)? – Malakai 2013-03-07 11:45:22
是的,'.txt'文件在加载到'TextureAtlas'时会告诉它加载所有引用的纹理文件。您应该*不*处理资产管理器手动加载的资产。在AssetManager上使用'卸载'。请参阅https://code.google.com/p/libgdx/wiki/AssetManager – 2013-03-07 16:48:55
如果您在问题中看到我的代码,那就是我所做的。但在卸载后,我放弃了TextureAtlas(gameSpritePack)。这是正确的还是我不需要?谢谢。 – Malakai 2013-03-07 17:08:27