我使用位图字体在屏幕上渲染游戏fps但是没有大小的方法。这对我来说是一个问题,因为我的相机视口大小非常小,因此渲染时的文字很大且像素化。
font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);
答案 0 :(得分:35)
您是否尝试过用于调整字体大小的setScale()方法
myFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
myFont.setScale(scale);
如果您遇到问题,请发表评论
祝你好运!!
修改:
使用最新的libgdx版本,尝试按如下方式缩放字体:
myFont.getData().setScale();
答案 1 :(得分:2)
setScale是要使用的功能。请注意,使用最新的LibGDX版本(虽然之前已更改),但您需要这样做:
font.getData().setScale(2, 2);
之前就足够了:
font.setScale(2, 2);
setScale中的第一个数字是X刻度,第二个是Y刻度。
答案 2 :(得分:1)
我经常使用minos23建议的内容。但是,它的缺点是它可能看起来像素化,特别是在向上扩展时。花哨的大型位图字体会占用大量空间,如果您需要许多不同的字体,可能会超出预算。
通过使用Gdx.Freetype,您可以在运行时从小.ttf
个文件创建位图字体。这意味着您只需要将.ttf
文件与您的应用一起发送,并可以根据用户设置(如分辨率)生成字体。
然后缩放和freetype解决方案具有不同字体大小的多个位图。这样,您的字体始终保持清晰,但代价是存储。
答案 3 :(得分:0)
我也使用setScale()函数来减少字体大小,但在这里我想提供另一种解决方案,我有一个问题。为什么你不使用FPSRenderer实例或为什么你不在另一批投影矩阵具有屏幕尺寸的情况下绘制你的fps标签?
答案 4 :(得分:0)
Netero的答案有效。 如果您想使代码更整洁,可以编写一个辅助函数:
public static void setLineHeight(BitmapFont font, float height) {
font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}