[英]Loading tile sheet in Libgdx
我正在使用Libgdx,但仍然有點菜鳥(不是編程的,只是Libgdx)。 我有其中一個較大的png磁貼紙,也有單個磁貼。 我想做的就是讓自己輕松地加載這些東西。 現在,我通過傳遞這樣的文件名來分別加載它們:
final String[] fileNames =
{ "data/brick_dark1.png", "data/dngn_open_door.png",
"data/cobble_blood1.png", "data/misc_box.png", "data/brick_dark6.png",
"data/stone_stairs_down.png", "data/stone_stairs_up.png",
"data/dngn_unseen.png", "data/dirt1.png", "data/dragon1.png", };
for (String s : fileNames)
{
texture = new Texture(Gdx.files.internal(s));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
// TextureRegion region =
// new TextureRegion(texture, 0, 0, spriteWidth, spriteHeight);
sprite = new Sprite(texture);
thingRepo.add(sprite);
}
這很好用,但是這也意味着我的fileNames數組必須明確地指定每個已知的資產。 那么,我可以通過以下方式之一執行此操作嗎?或者我是否已正確執行此操作?
獎勵布朗尼積分可用於其他改進想法!
您可以將Atlas
與TexturePacker2
一起使用。 您應該節省用於貼圖渲染的已使用紋理的數量(最好的選擇只是一個大紋理),因為SpriteBatch
緩存會為相同的紋理渲染調用。
將您的圖塊放置在某個forlder中(例如tiles/tile-1.png
, tiles/tile-2.png
2.png),然后通過批處理腳本將它們全部轉換為altas:
java -cp /path-to-the/gdx.jar;/path-to-the/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 %source_folder%/tiles %destination_folder%/tiles
TexturePacker2
打包將在Atlas
找到的所有紋理。 現在您可以加載它:
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("tiles/yourAtlas.atlas"), false);
現在,您可以通過調用atlas.getRegions()
獲得加載的圖塊,或者使用Skin
來保持它們:
skin.addRegions(atlas);
現在,您只需調用以下TextureRegion
即可獲取圖塊( TextureRegion
而不是Texture
):
skin.getRegion("tile-1")
我希望這可以幫助你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.