我正在使用位图字体在屏幕上渲染游戏 fps,但没有用于大小的方法。这对我来说是个问题,因为我的相机视口尺寸非常小,因此渲染时的文本很大且像素化。
font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);
我正在使用位图字体在屏幕上渲染游戏 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 的建议。但缺点是它可能看起来像素化,尤其是在向上缩放时。花哨的大位图字体会占用大量空间,如果您需要许多不同的字体,您可能会超出预算。
通过使用Gdx.Freetype,您可以在运行时从小.ttf
文件创建位图字体。这意味着您只需要将.ttf
文件与您的应用一起发送,并且可以根据用户设置(如分辨率)生成字体。
除了缩放和自由类型解决方案之外,还有多个不同字体大小的位图。这样,您的字体始终保持清晰,但以生成正确字体的运行时性能为代价。
setScale 是要使用的函数。请注意,使用最新的 LibGDX 版本(虽然之前已更改),您需要这样做:
font.getData().setScale(2, 2);
在它足够做之前:
font.setScale(2, 2);
setScale 中的第一个数字是 X 比例,第二个是 Y 比例。
我也像其他人一样使用 setScale() 函数来减小字体大小,但在这里我想提供另一种解决方案,我有一个问题。为什么不使用 FPSRenderer 实例,或者为什么不在另一个具有屏幕尺寸的投影矩阵的批次上绘制 fps 标签?
Netero 的回答很有效。如果你想让代码更干净,你可以写一个辅助函数:
public static void setLineHeight(BitmapFont font, float height) {
font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}