Libgdx - 将位图字体放置在屏幕中心

时间:2014-10-13 16:11:46

标签: android libgdx game-engine

我是Libgdx的新手,但熟悉Android。我能够将纹理放在屏幕的中心。但是当使用字符串“Level 1”进行bitmapfont时,我无法确定字符串的宽度,因此我无法将其放在屏幕的中心。

你能不能帮我找到Bitmapfont的宽度/高度,它有字符串“Level 1”

3 个答案:

答案 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
  •   
  • 用户可能会将自己的字体添加到游戏中
  •   

引用:https://github.com/libgdx/libgdx/wiki/Gdx-freetype