处理文本按钮的首选视口 libgdx

Preffered viewPort to dealing with textButton libgdx

我在玩一个新游戏,我创建了 2 个摄像头,一个用于真实世界,另一个 (GUI) 用于静态分辨率 (800 x 480)

private void init () {

    camera = new OrthographicCamera(16,9);
    camera.position.set(0, 0, 0);
    camera.update();

    cameraGUI = new OrthographicCamera(800,480);
    cameraGUI.position.set(0, 0, 0);
    cameraGUI.update();

我想在我的游戏中使用文本按钮,所以我使用新的 fitViewPort 创建了一个新舞台

    fitViewPort=new FitViewport(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    gameController.stage=new Stage(fitViewPort);

然后我使用我的位图字体创建我的 textButtons 并在桌面上尝试它,它很棒 desktop

但是当我尝试另一个设备时,位置不一样 Tablet

然后我认为我的视口使用 cameraGui 宽度和高度,字体拉伸非常糟糕

任何帮助请:(

不要为 GUI 创建一个特殊的相机,因为视口已经有一个相机。

固定视口的宽度和高度,在您的情况下:

fitViewPort = new FitViewport(800, 480);
gameController.stage = new Stage(fitViewPort);

然后只需将演员添加到舞台并通过调用方法绘制即可

gameController.stage.draw();

注意:记得在调整大小的方法中添加gameController.stage.getViewport().update(width, height);

编辑:使用小的固定视口(800x480 很小)会导致缩放,这就是字体被拉伸的原因。例如,如果您 运行 在 1920x1080 显示器上使用 800x480 布局,它将缩放 225%。

你可以做的是生成一个大尺寸的字体,并为其数据 fe 设置比例。 bitmapFont20.getData().setScale(0.5F);(在本例中,字体由 FreeTypeFontGenerator 生成,大小为 40)。使用此技巧,您将能够获得很好的结果。证明如下。它是缩放到 1920x1080 的 640x360F * (float) Gdx.graphics.getHeight() / (float) Gdx.graphics.getWidth() 视口。生成的字体大小为 72,然后数据比例设置为 0.5F

这是相同的文本,但没有修改数据比例。