如何设置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());
}
我正在使用位图字体在屏幕上渲染游戏 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());
}