[英]Can't load tiledmap within thread without it glitching(libgdx)
因此,如果我將代碼安排成這樣(在屏幕內):
private TiledMap m = new Tmxloader.load("map");
private OrthogonalTiledMapRenderer renderer = new OrthogonalTiledMapRenderer(m);
public void render(float delta) {
renderer.setView(cam);
renderer.render();
}
它工作得很好。 地圖已加載,渲染,沒有問題。
但是當我將地圖的加載放在線程中以減少加載時間時...
private TiledMap m;
private OrthogonalTiledMapRenderer renderer;
private boolean loaded = false;
new Thread(new Runnable() {
@Override
public void run() {
m = new Tmxloader.load("map");
loaded = true;
}
}).start();
if(loaded){
renderer = new OrthogonalTiledMapRenderer(m);
}
public void render(float delta) {
renderer.setView(cam);
renderer.render();
}
地圖渲染不正確。 實際上,這時我什至不稱其為地圖渲染。 我只看到一些灰色圓圈。 我已經嘗試了所有方法,但找不到解決方法。
(這不是我的確切代碼,您可能會說我不需要在這里在線程中加載地圖,但是在我的游戲中我可以。相信我。)
根據文檔 :
在Libgdx中,只有一個線程(執行應用程序生命周期回調的線程)具有有效的OpenGL上下文,並且可以調用OpenGL調用。 您可以從其他線程向GDX線程發布Runnable,以使其能夠代表其他線程執行任務。 已發布的可運行對象將在下一個渲染回調運行之前執行。 參見Gdx.app.postRunnable()
如果加載時間是問題,則應使用AssetManager滿足要求,並在加載所有資源時顯示加載屏幕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.