繁体   English   中英

LibGDX-尝试在游戏中显示可见计时器

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM