兩個版本都可以工作,但我不確定要使用哪一個版本以及爲什麼要使用該版本?如果您已經卸載資產,您是否需要處置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