2017-08-02 74 views
0

我花了幾天的時間試圖找出我的代碼出了什麼問題。我試圖在libgdx中渲染一個瓷磚貼圖(.tmx),但它不渲染,它只是顯示一個沒有錯誤的紅色屏幕。我已經重寫了幾次代碼,並且總是得到相同的結果。我的平鋪地圖未在libgdx中呈現

我的代碼:

public class Main extends ApplicationAdapter { 
SpriteBatch batch; 
TiledMap map; 
TmxMapLoader loader; 
OrthogonalTiledMapRenderer renderer; 
OrthographicCamera camera; 

@Override 
public void create() { 
    batch = new SpriteBatch(); 
    loader = new TmxMapLoader(); 
    map = loader.load("TiledMaps/TestMap.tmx"); 
    renderer = new OrthogonalTiledMapRenderer(map); 
    camera = new OrthographicCamera(); 
    camera.setToOrtho(false,Gdx.graphics.getWidth(),Gdx.graphics.getHeight()); 

} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(1, 0, 0, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    camera.update(); 

    renderer.setView(camera); 
    renderer.render(); 

    batch.begin(); 
    batch.end(); 
} 

@Override 
public void dispose() { 
    batch.dispose(); 
    renderer.dispose(); 
    map.dispose(); 
} 

}

任何人都可以找到發生了什麼事在這裏我有一個在Android資源文件夾中的文件夾TileMaps的tilesheet的TMX文件。

任何幫助表示讚賞,在此先感謝。

+0

[如何在Android上使用LibGdx設置地圖大小](https://stackoverflow.com/questions/45018391/how-to-set-map-size-on-android-using-libgdx) – Aryan

+0

tileWidth,tileHeight,mapWidth,mapHeight的值是多少? – Aryan

+0

我想你需要在'batch.begin()'和'batch.end()'裏面包裝'renderer.render()'。你可以看到[這裏](https://github.com/haxpor/raceplant/blob/master/core/src/io/wasin/raceplant/states/Play.kt#L933-L963),類似於你在那裏做的。 – haxpor

回答

1

如果我理解正確,你正在嘗試一些複雜的(地圖渲染),但遇到一個簡單的問題(不渲染任何東西)。

你有一個簡單的程序,你有一些渲染?建立它,所以你有幾個硬編碼的瓷磚渲染?爲了正確讀取和顯示地圖上的第一個圖塊,建立了一點點?在最終擴展它來閱讀和顯示所有的瓷磚之前,一旦你知道基礎工作正常?

這就是我將如何解決這個問題。經過多年的編程,只是使用相同的過程來獲得CreateProcess在Windows上的C++工作。沒有在我的代碼工作,所以我建立了一個空的項目,只是在notepad.exe上運行CreateProcess,並用StackOverflow.com的答案調整了事情,直到我得到它的工作,現在是關於在其他複雜的點滴加回來,所以我因爲一次承擔太多而沒有完全喪失。

+0

林不太清楚你在說什麼,但從我能理解我應該開始只渲染1瓦然後從那裏移動?如果這就是你的意思,我不知道如何使用libgdx API以及我在幾個月前提供的所有代碼。 @Domarius – Arcxes

+1

我非常相信你的問題不是libgdx特有的,它更像是一個普遍的問題解決問題。邏輯決定了你的代碼在當時和現在之間沒有變化,還有其他的變化,你需要簡單地進行試驗和錯誤來縮小可能的範圍。 我在這裏告訴你的不是問題的答案,但如何找到問題的答案,這是更重要的:) 如果你的目標是渲染整個地圖,但不知道如何甚至單獨渲染一個瓦片,這是你跳過的一個嚴肅的步驟。你需要先學習基礎知識。 – Domarius

+0

我注意到libgdx有一個論壇,你有發佈嗎?但比這更重要的是,應該有關於如何在屏幕上呈現某些東西的教程,您應該遵循這一點,它可能會在設置正確呈現您錯過的東西方面發揮關鍵作用。 – Domarius