我是Libgdx的新手,但熟悉Android。我能够将纹理放在屏幕的中心。但是当使用字符串“Level 1”进行bitmapfont时,我无法确定字符串的宽度,因此我无法将其放在屏幕的中心。
你能不能帮我找到Bitmapfont的宽度/高度,它有字符串“Level 1”
答案 0 :(得分:7)
font.getBounds()不再起作用,所以答案应该更新。
您可以使用以下内容:
GlyphLayout glyphLayout = new GlyphLayout();
String item = "Example";
glyphLayout.setText(font,item);
float w = glyphLayout.width;
并使用w以相对于位置为中心
答案 1 :(得分:0)
您可以通过这种方式获取使用Bitmapfont绘制的字符串的宽度:
font.getBounds(<String>).width;
在屏幕中央(使用相机)绘制它将是这样的:
int level = 1;
String s = "Level "+level;
font.draw(batch, s, camera.viewportWidth/2F-font.getBounds(s).width/2F, camera.viewportHeight()/2F);
答案 2 :(得分:-1)
你应该尝试使用Libgdx的FreeType扩展,它将解决你所有的字体格式问题。
如果您想在游戏中绘制文字,通常使用BitmapFont。但是,有一个缺点: BitmapFonts依赖于图片,因此如果您想要不同尺寸,则必须缩放它们,这可能看起来很丑陋。
你可以保存你游戏中所需的最大尺寸的BitmapFont然后你就不必放大,只是向下,对吧?嗯,这是真的,但是这样的BitmapFont可以轻松占用硬盘驱动器上相应TrueType字体(.ttf)的两倍空间。现在想象一下,您必须将所有大型BitmapFonts与您的游戏一起发布,并且您的游戏在Android设备上使用十种不同的字体。
问题的解决方案是gdx-freetype扩展名:
- 在您的游戏中只发送轻量级.ttf文件
- 动态生成所需大小的BitmapFont
- 用户可能会将自己的字体添加到游戏中