gpt4 book ai didi

java - 无法在线程内加载平铺 map 而不出现故障(libgdx)

转载 作者:行者123 更新时间:2023-12-02 12:39:07 27 4
gpt4 key购买 nike

因此,如果我将代码排列如下(在屏幕内):

private TiledMap m = new Tmxloader.load("map");
private OrthogonalTiledMapRenderer renderer = new OrthogonalTiledMapRenderer(m);

public void render(float delta) {

renderer.setView(cam);
renderer.render();

}

它工作得很好。 map 已加载、渲染,没有问题。

但是当我将 map 的加载放在线程中以减少加载时间时......

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();

}

map 渲染不正确。事实上,此时我什至不会将其称为 map 渲染。我所看到的只是一些灰色的圆圈。我已经尝试了所有方法,但找不到解决方法。

(这不是我的确切代码,您可能会说我不需要在此处的线程中加载 map ,但在我的游戏中我需要。相信我。)

最佳答案

根据doc :

在 Libgdx 中,只有一个线程(执行应用程序生命周期回调的线程)具有有效的 OpenGL 上下文,并且可以调用 OpenGL 调用。您可以将 Runnable 从其他线程发送到 GDX 线程,以使其代表其他线程执行操作。发布的可运行对象将在下一个渲染回调运行之前执行。请参阅Gdx.app.postRunnable()

<小时/>

如果加载时间是问题,那么您应该使用 AssetManager满足您的要求,并在加载所有资源时显示加载屏幕。

关于java - 无法在线程内加载平铺 map 而不出现故障(libgdx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com