簡體   English   中英

在Libgdx中加載磁貼

[英]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數組必須明確地指定每個已知的資產。 那么,我可以通過以下方式之一執行此操作嗎?或者我是否已正確執行此操作?

  1. 通常將所有資產加載到我的資產文件夾中,而不知道文件名。 我認為這很困難,因為我必須有一種在加載時輕松映射它們的方法(例如,在Map中)。
  2. 加載大的瓷磚圖紙,將其編入索引並將其存儲在地圖中。 與數字1相同的問題。
  3. 以正確的方式做,希望有人現在能向我解釋。

獎勵布朗尼積分可用於其他改進想法!

您可以將AtlasTexturePacker2一起使用。 您應該節省用於貼圖渲染的已使用紋理的數量(最好的選擇只是一個大紋理),因為SpriteBatch緩存會為相同的紋理渲染調用。

將您的圖塊放置在某個forlder中(例如tiles/tile-1.pngtiles/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM