我在libGDX中遇到了问题。我不想使用虚拟屏幕尺寸来在每部手机上使用相同的应用程序。我用hiero从.ttf生成了一个.fnt文件。然后我用这个.fnt制作了一个TextButton(使用皮肤)。但问题是,当我使用Viewport,Stage和Table设置虚拟屏幕(480x800)时,我设置了这样的内容:
在构造函数中:
viewport = new StretchViewport(480, 800);
stage = new Stage(viewport);
在resize方法中:
viewport.update(width,height);
并且TextButton上的文本是像素化的。
如何解决问题,或者如何在所有设备上将屏幕设置为相同并获得流畅的文字?
谢谢!
答案 0 :(得分:0)
使用FreeTypeFontGenerator,它会在程序运行时动态地从.ttf创建一个BitmapFont,这样就可以为设备生成正确大小的BitmapFont,而不需要拉伸/缩放。 https://github.com/libgdx/libgdx/wiki/Gdx-freetype
答案 1 :(得分:0)
我肯定会查看FreeTypeFontGenerator并使用BitmapFont,因此您可以使用纹理过滤器,这会对质量产生巨大影响。 TextureFilter.Linear是您正在寻找的。没有经过测试,但有些内容如下:
BitmapFont yourBitmapFont = new BitmapFont();
yourBitmapFont.getRegion().getTexture().setFilter(TextureFilter.Linear,TextureFilter.Linear);
Skin tileSkin = new Skin();
tileSkin.add("white", new Texture("whatever/image/path"));
tileSkin.add("default", new BitmapFont());
TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
textButtonStyle.up = tileSkin.newDrawable("white");
textButtonStyle.down = tileSkin.newDrawable("white", Color.DARK_GRAY);
textButtonStyle.checked = tileSkin.newDrawable("white",
Color.LIGHT_GRAY);
textButtonStyle.over = tileSkin.newDrawable("white", Color.LIGHT_GRAY);
textButtonStyle.font = _yourBitmapFont;
tileSkin.add("default", textButtonStyle);