【问题标题】:Preffered viewPort to dealing with textButton libgdx首选 viewPort 来处理 textButton libgdx
【发布时间】:2016-08-30 16:41:37
【问题描述】:

我正在使用一个新游戏,我创建了 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();

我想在我的游戏中使用 textButton,所以我使用新的 fitViewPort 创建了一个新阶段

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

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

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

然后我认为对于我的视口使用 cameraGui 宽度和高度,字体被拉伸得很糟糕

请帮忙:(

【问题讨论】:

    标签: libgdx viewport


    【解决方案1】:

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

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

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

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

    gameController.stage.draw();
    

    注意:记得在你的resize方法中添加gameController.stage.getViewport().update(width, height);

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

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

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

    【讨论】:

    • 在很多情况下,单独的摄像头和 GUI 视口是合适的。
    • 感谢您的回答,但这并不能解决我的问题,字体仍然很难看
    • 我编辑了答案。现在它包括一种使字体缩放看起来更好的方法。
    • 再次感谢,我尝试使用一些 bitmapFont 来绘制它,它看起来很棒,但是我如何将它与 textButton 一起使用,我看到了 button.font.getData().setScale(..)不工作,谢谢。
    • 似乎在新版本的libgdx(1.9.4和1.9.5-snapshot)这个方法不起作用,有人告诉我使用button.getLabel().setFontScale(0.5 F);它的工作,非常感谢你,现在字体看起来很棒:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多