作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,如果我将代码排列如下(在屏幕内):
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/
我是一名优秀的程序员,十分优秀!