问题描述
我正在用 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 对象以查看它是否会加快速度。它没有
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 (将#修改为@)