[英]How to set the width and height of Screen in 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等于手机屏幕的宽度,高度,因此游戏视图填满整个手机屏幕。
Screen
的子类实现。 我认为完成的游戏应该像这样的照片: 按钮栏添加到手机屏幕的底部。 当我单击4个按钮中的一个时,游戏视图已切换,但按钮栏未切换。 例如,如果玩家点击“排名”按钮,则游戏将视图设置为排名视图(由排名屏幕实施),其显示玩家的分数,并且按钮仍然可见:
我可以想到两种方法来保持按钮栏可见:
将按钮栏和游戏视图组合到libgdx的屏幕中。 我认为这是浪费,因为我需要在每个屏幕上绘制4个按钮,在4个屏幕中共有16个按钮。
将手机屏幕分为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.