簡體   English   中英

沒有故障就無法在線程內加載tiledmap(libgdx)

[英]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.

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