在libgdx中使用相同字体但不同大小的方法

14

我正在使用BitmapFonts、LabelStyles和Labels来显示文本。

我想要调整一些标签的大小,因此我使用了以下代码:

fontType.scale(-.6f);

LabelStyle style = new LabelStyle(fontType, Color.WHITE);

titleLabel = new Label("Points", style);
titleLabel.setColor(Color.RED);
titleLabel.x = 260; 
titleLabel.y = 310;

但是当我想要调整另一个标签的大小时,所有包含该字体的标签都会被调整大小(我创建了一个新的LabelStyle)。因此,我调整标签而不是字体的大小,但这并不能解决问题,因为它并没有调整标签的大小,有什么建议吗?

2个回答

14

如果您想独立缩放各个标签(或标签组),则必须为每个标签(或标签组)创建单独的BitmapFonts和LabelStyle。

从检查libgdx源代码中可以看出,Label使用LabelStyle中的BitmapFont引用,并将其传递给一个内部使用的BitmapFontCache;没有进行任何深度复制,因此它们都使用您使用LabelStyle创建的相同BitmapFont。


我认为那将是最好的选择 :/ 尽管创建位图字体需要很多时间 u.u 谢谢 :) - Rudy_TM
很遗憾,label.setScale() 是无用的。我也认为这是最好的解决方案,尽管它很丑陋。谢谢分享。 - Don

13

我正在使用libgdx 0.9.8(因为这是一个旧问题),当我像这样创建标签:

lblA = new Label("A", skinA);

我可以使用以下代码调整该标签的字体大小:

lblA.setFontScale(3);

这不会影响我以同样方式创建的其他标签。我已将我的某些标签设置为字体比例(2),它们是正常的(不受(3)影响)。然而,我发现我的标签样式不太“独立”。它们需要有自己的LabelStyle分配,否则你就会得到你所说的行为。


从libGDX 1.5.6开始(如果不是更早),即使它们共享相同的“LabelStyle”,使用“setFontScale(float)”也会单独影响标签。 - James Skemp
@JamesSkemp 有没有像全局设置一样的东西可以将所有内容放大?在手机上,所有东西都被绘制得非常小(更高的像素密度),但这也意味着我可以将字体放大2倍甚至3倍,并节省纹理空间。 - Madmenyo
好问题@MennoGouw - 很抱歉我不确定 :( 如果是我的话,我想我会创建某种全局函数或LabelStyle - James Skemp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接