为什么我的 Graphics.drawString() 需要这么多时间来渲染文本?

问题描述

我正在用 Java 编写我的第一个视频游戏,并且我已经进入了我想要在我的 HUD 中显示分数和级别的游戏部分。

对于我的 HUD 类,我有一个渲染方法显示其中的所有元素。

public void render(Graphics g) {
    g.setColor(Color.gray);
    g.fillRect(15,15,200,32);
    g.setColor(new Color((int)red,(int)greenVal,0));
    g.fillRect(15,(int)HEALTH * 2,32);
    g.setColor(Color.white);
    g.drawRect(15,32);

    Graphics2D d2 = (Graphics2D) g;
    d2.drawString("score: " + score,280,30);
    d2.drawString("Level: " + level,360,30);

}

我将其转换为 Graphics2d 对象以查看它是否会加快速度。它没有

我从我的游戏类及其渲染方法调用我的 HUD 渲染方法

public void render() {
    this.requestFocus();
    BufferStrategy bs = this.getBufferStrategy();
    if (bs == null) {
        this.createBufferStrategy(3);
        return;
    }
    Graphics g = bs.getDrawGraphics();

    g.setColor(Color.black);
    g.fillRect(0,WIDTH,HEIGHT);

    handler.render(g);
    hud.render(g);


    g.dispose();
    bs.show();
}

当我第一次加载我的游戏时,FPS 为 1 或 2,屏幕保持全白约 3-4 秒。然后游戏加载,我的 FPS 恢复到 800 或更多。但是游戏从一开始就在运行,即使在那个空白屏幕中,游戏也已经开始了。这对玩家来说是一个问题,因为他们的健康状况可能会下降,而且他们甚至无法阻止这种情况发生。

如果这里没有足够的信息,我很乐意提供更多代码。游戏本质上只是在物体成波浪状时躲避它们。

它绝对是 drawString() 方法。我注释掉了画弦的线条,效果很好,把它们放回去,问题仍然存在。

我只想知道是否有一种方法可以更快地绘制字符串,或者是否有办法改进我必须解决的问题。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)