簡體   English   中英

平鋪地圖編輯器導出Libgdx

[英]Tiled Map Editor exporting Libgdx

我在導出Tiled地圖文件時遇到問題。 我創建map,並建議一個教程,我導出tmx文件並將其導入Eclipse項目資產中。 在代碼中,我這樣做:

tiledMap = new TmxMapLoader().load("map.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);

我的問題是,當我執行它時,我得到了:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: tileset 2/grass-tiles-2-small.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:96)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:116)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:101)
    at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:43)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: tileset 2/grass-tiles-2-small.png (Internal)
    at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
    at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)

我該如何解決?

正如我在libGdx Wiki中看到的那樣,有兩種選擇來加載tmx文件。 確保文件在資產文件夾下。 您可以在libGdx Wiki中看到如何加載tmx文件 也存在類似的問題在這里

Tiled在.tmx文件中引用其.tmx圖像源。 因此,您使用的tileset grass-tiles-2-small.png 嵌入,也必須加載。 幸運的是,這可以通過為您解決圖像依賴關系自動完成。

因此,除了map.tmx您還必須通過將所有使用過的圖像文件復制到資產文件夾中來確保它們均可以訪問。 它必須看起來像這樣: assets/tileset 2/grass-tiles-2-small.png 這樣做后刷新您的Eclipse項目,以防萬一它沒有引起注意。

如果您已經這樣做了,那么問題的另一個根源可能是目錄名稱中的空格。 嘗試將tileset_2 tileset 2重命名為tileset_2並創建一個新的.tmx文件。

它只是無法為您加載紋理grass-tiles-2-small.png 我通常會打開TMX/XML文件,並手動將圖塊的文件名設置為僅文件名,而沒有路徑。

例:

<tileset firstgid="1" name="grass" tilewidth="32" tileheight="32">
  <image source="grass-tiles-2-small.png" width="256" height="256"/>
 </tileset>

您應該將紋理放置在與map.tmx最好位於Android/assets/../..相同的文件夾中,並使用Gdx.files.internal加載地圖。 internal僅返回常規文件句柄。

tiledMap = new TmxMapLoader().load(Gdx.files.internal("yourmap.tmx"));

因為我們沒有在tmx / xml中指定路徑,所以TMX只會在同一文件夾中查找要使用的正確紋理。

想法:我真的很討厭LibGDX默認的TmxLoader 它可以用於非常簡單的事情,但是當Sprite重疊時,您無法對深度進行排序,因為繪制的唯一方法是一次繪制完整的圖層。 如果需要在播放器上重疊,則需要能夠逐塊繪制/逐個對象繪制。 我為Tiled地圖編寫了自己的XML解析器,這讓我感到驚訝,它如此簡單。 我有一個非常復雜的地圖,只花了大約30行代碼LibGDX所有內容加載到准備在LibGDX繪制的數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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