[英]LibGDX - trying to display a visible timer in my game
如标题所示,我试图在游戏中显示一个从0开始的计时器(理想情况下,我希望它位于屏幕的左上方)
我这里有计时器的逻辑:
public class Timer {
SpriteBatch batch;
private BitmapFont font;
private float deltaTime = 0;
CharSequence str;
public Timer() {
font = new BitmapFont();
batch = new SpriteBatch();
}
public void drawTime() {
deltaTime += Gdx.graphics.getDeltaTime();
str = Float.toString(deltaTime);
font.draw(batch, str, 0, 0);
}
}
我在render()方法的主类( Game )中调用此计时器,如下所示:
public void render() {
player.update();
platform1.update();
platform2.update();
batch.begin();
Gdx.gl.glClearColor(135/255f, 206/255f, 235/255f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
flag.drawS(batch);
flag.draw(batch);
player.draw(batch);
platform1.draw(batch);
platform2.draw(batch);
timer.drawTime();
batch.end();
}
}
我收到错误消息“ SpriteBatch begin必须在绘制之前被调用”,因此我尝试将timer.drawTime()方法移至render()的不同位置,但还是没有运气。
有人知道怎么了吗? 任何帮助都非常感激:)
您不应该在Timer对象内创建SpriteBatch()。 SpriteBatch应该创建一次,并由多个元素用来绘制自身。 您的Timer draw()方法应如下所示:
public void drawTime(SpriteBatch batch) {
deltaTime += Gdx.graphics.getDeltaTime();
str = Float.toString(deltaTime);
font.draw(batch, str, 0, 0);
}
您遇到的特定错误是由您调用batch.begin();
引起的batch.begin();
在另一个SpriteBatch对象上,然后在drawTime()
使用该drawTime()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.