繁体   English   中英

如何在Libgdx中设置Screen的宽度和高度?

[英]How to set the width and height of Screen in Libgdx?

对不起,我无法清楚地描述我的问题。 我重新描述它:

  1. 我正在用libgdx制作一个安卓游戏,现在我完成了一个演示:

演示

它只有一个游戏视图,由GameScreen类实现,它是libgdx中Screen的子类:

public class LaohuGame extends Game {

public static final int FRUIT_NUM = 24;
public static final String WORK_DIR = "Desktop/assets/";

@Override
public void create() {
    GameScreen gameScreen = new GameScreen(this);
    setScreen(gameScreen);

}

public class GameScreen extends LaohuScreen {

private final Stage stage;
public static int START_X = 11;
public static int START_Y = 199;

public GameScreen(Game game) {
    super(game);
    stage = new Stage(GAME_WIDTH,GAME_HEIGHT,true);
    //add actors to the stage
}

public class LaohuScreen implements Screen{

int GAME_WIDTH;
int GAME_HEIGHT;
protected Game game;
public LaohuScreen(Game game) {
    this.game = game;
    GAME_WIDTH = Gdx.graphics.getWidth();
    GAME_HEIGHT = Gdx.graphics.getHeight();
}

GAME_WIDTH,GAME_HEIGHT等于手机屏幕的宽度,高度,因此游戏视图填满整个手机屏幕。

  1. 现在我继续开发我的游戏。 我想在我的游戏中有4个游戏视图。 每个游戏视图由libgdx中Screen的子类实现。 我认为完成的游戏应该像这样的照片:

完成游戏

按钮栏添加到手机屏幕的底部。 当我单击4个按钮中的一个时,游戏视图已切换,但按钮栏未切换。 例如,如果玩家点击“排名”按钮,则游戏将视图设置为排名视图(由排名屏幕实施),其显示玩家的分数,并且按钮仍然可见:

按下排名按钮后

  1. 我可以想到两种方法来保持按钮栏可见:

    1. 将按钮栏和游戏视图组合到libgdx的屏幕中。 我认为这是浪费,因为我需要在每个屏幕上绘制4个按钮,在4个屏幕中共有16个按钮。

    2. 将手机屏幕分为2个区域; 游戏视图区和按钮栏区域。 由libgdx的Screen实现的游戏视图区域,我可以通过setScreen方法切换游戏视图。 问题是libgdx的屏幕似乎总是填满整个手机屏幕; 我无法设置屏幕的宽度和高度。 我尝试使用resize(int width, int height)方法来减少屏幕的高度,为按钮栏留下空白,但它不起作用。

码:

public class LaohuGame extends Game {

public static final int FRUIT_NUM = 24;
public static final String WORK_DIR = "Desktop/assets/";


@Override
public void create() {
    GameScreen gameScreen = new GameScreen(this);
    setScreen(gameScreen);

}

@Override
public void setScreen(Screen screen) {
    super.setScreen(screen);
    this.getScreen().resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() * 5 / 10);
}

@Override
public void resize(int width, int height) {
    if (getScreen() != null) getScreen().resize(width, height * 5 / 10);
}
}

任何建议表示赞赏。

所有libgdx事物都假定宽度和高度始终等于“窗口”大小。 在台式机上,这可能比整个屏幕尺寸小,但它仍将填满整个渲染区域。 在手机上,它很可能永远是手机的显示尺寸。

将其设置为较小的东西对您没有帮助,因为它不会仅使用渲染区域的一部分。 相反,你会得到奇怪的延伸结果。

不要更改从resize方法获得的值。 而是使用您的第一个解决方案并渲染游戏屏幕底部的按钮。

您无需在此处复制任何代码。 实现类似“ButtonBarGUI”的东西,它使用Stage和scene2d.ui的东西来渲染屏幕底部的四个按钮,然后只需重复使用这个帮助器类通过Stage.draw()在任何屏幕上渲染按钮栏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM