如何设置Libgdx位图字体大小?

How set Libgdx bitmap font size?

我正在使用位图字体在屏幕上渲染游戏 fps,但没有确定大小的方法。这对我来说是个问题,因为我的相机视口尺寸非常小,所以渲染时的文本很大且像素化。

font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);

你试过我用来调整字体大小的 setScale() 方法吗

myFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
myFont.setScale(scale);

如有问题,请留言

祝你好运!!

编辑:

使用最新的 libgdx 版本,尝试像这样缩放字体:

myFont.getData().setScale();

我经常使用 minos23 建议的内容。但缺点是它看起来像素化,尤其是在向上缩放时。花哨的大位图字体会占用很多空间 space,如果您需要许多不同的字体,您可能会超出预算。

通过使用 Gdx.Freetype,您可以在运行时从小 .ttf 文件创建位图字体。这意味着您只需将 .ttf 文件与您的应用程序一起发送,就可以根据分辨率等用户设置生成字体。

除此之外,缩放和自由字体解决方案具有多个不同字体大小的位图。通过这种方式,您的字体始终保持清晰,但以生成正确字体的运行时性能为代价。

我也像其他人一样使用 setScale() 函数来减小字体大小,但在这里我想提供另一种解决方案,我有一个问题。为什么不使用 FPSRenderer 实例或者为什么不在投影矩阵具有屏幕尺寸的另一批次上绘制 fps 标签?

setScale 是要使用的函数。请注意,对于最新的 LibGDX 版本(尽管之前已更改),您需要这样做:

font.getData().setScale(2, 2);

之前还不够:

font.setScale(2, 2);

setScale中第一个数字是X坐标,第二个是Y坐标。

Netero 的回答有效。 如果你想让代码更干净,你可以写一个辅助函数:

public static void setLineHeight(BitmapFont font, float height) {
    font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}