LibGDX文本无法在较大的屏幕上正确呈现

时间:2016-10-01 18:33:59

标签: java android libgdx

在我的854 x 480 LG Leon上渲染得很好,但在更大的屏幕分辨率(2560 x 1440)上会发生这种情况:http://imgur.com/a/rcbJK

处理文字的代码是:http://imgur.com/a/c316e

我已经尝试扩展Label的边界,因为我认为它可能会限制文本,但它仍然无法正常显示。

导致这种情况的原因是什么?

3 个答案:

答案 0 :(得分:0)

您应该使用Scene2D和ViewPort。

另外,请注意使用坐标(即:x:64,y:在每种不同的屏幕尺寸上进行32次更改)

答案 1 :(得分:0)

当您在多个设备上运行游戏时,这是常见问题。因为您的游戏在不同的屏幕中以不同的宽高比运行。它通常被称为多屏幕问题。为了解决这个问题,libgdx在类上提供了一个名为viewPort的方法。主要是你可以看到三个viewpors。 1)填充viewPort。 2)适合viewPort。 3)拉伸视口。 有关更多详细信息,您可以阅读libgdx文档。在这里我发布一些示例代码,可以解决您的多屏幕问题。

public class myGame extends ApplicationAdapter {

public OrthographicCamera camera;
public Viewport viewPort;
private SpriteBatch batch;
private BitmapFont myScoreFont;

//一般屏幕分辨率     public int APP_WIDTH = 1280;     public int APP_HEIGHT = 800;     public int fontPositionIn_X = 600;     public int fontPositionIn_Y = 400;     public myGame(){

}

@Override
public void create() {
        myScoreFont = new    BitmapFont(Gdx.files.internal(Constants.PATH_TO_MY_SCORE_FONT), true);
    batch = new SpriteBatch();
        float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();
        camera = new OrthographicCamera();
    camera.position.set(0, 0, 0);
    camera.update();
    camera.setToOrtho(false, APP_WIDTH, APP_HEIGHT);
    viewPort = new fillViewPort(1280, 800, camera);


}

@Override
public void dispose() {
    batch.dispose();
}





@Override
public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
    float deltaTime = Gdx.graphics.getDeltaTime();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    myScoreFont.draw(batch,"any texts", fontPositionIn_X, fontPositionIn_Y)
    batch.end();

}

@Override
public void resize(int width, int height) {
    viewPort.update(width, height);
}

@Override
public void pause() {
}

@Override
public void resume() {
}

}

所以通过使用viewPort,您可以在所有不同的屏幕上玩游戏。

答案 2 :(得分:0)

不同的手机屏幕尺寸有不同的宽高比。这就是它显示不同屏幕的原因。要避免此问题,您必须使用viewPort。因此,您将能够处理不同的屏幕尺寸。有关更多详细信息,您必须阅读l​​ibgdx文档。在这里,我发布了一个示例代码,可以帮助您处理不同的屏幕大小。有三种视口主要使用 1)fillviewport 2)fitviewPort 3)stretchviewport 这里是详细的文档。

https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/viewport/FillViewport.html

public class myGame extends ApplicationAdapter {

public OrthographicCamera camera;
public Viewport viewPort;
private SpriteBatch batch;

public myGame() {

}

@Override
public void create() {
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();

    camera = new OrthographicCamera();
    camera.position.set(0, 0, 0);
    camera.update();
    camera.setToOrtho(false, 1280, 800);
    viewPort = new FillViewport(1280, 800, camera);


}

@Override
public void dispose() {
    batch.dispose();
}





@Override
public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
    float deltaTime = Gdx.graphics.getDeltaTime();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    batch.draw(sprie,0,0)
    batch.end();

}

@Override
public void resize(int width, int height) {
    viewPort.update(width, height);
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}
// don't copy paste it . just try to understand and implement it.