java使用libgdx添加菜单屏幕
我是Java新手。我正在写一个简单的游戏,比如Flappy Bird。我喜欢在游戏开始前添加菜单屏幕,比如 -开始游戏-积分可能是选项(可能),诸如此类
以下是我的oncreate的基本代码:
@Override
public void create () {
batch = new SpriteBatch();
background = new Texture("background.png");
smurf = new Texture("smurf.png");
gargamel1 = new Texture("gargamel.png");
gargamel2 = new Texture("gargamel.png");
gargamel3 = new Texture("gargamel.png");
distance = Gdx.graphics.getWidth() / 2;
random = new Random();
smurfX = Gdx.graphics.getWidth() / 2 - smurf.getHeight() / 2;
smurfY = Gdx.graphics.getHeight() / 3;
shapeRenderer = new ShapeRenderer();
smurfCircle = new Circle();
enemyCircles = new Circle[numberOfEnemies];
enemyCircles2 = new Circle[numberOfEnemies];
enemyCircles3 = new Circle[numberOfEnemies];
font = new BitmapFont();
font.setColor(Color.WHITE);
font.getData().setScale(5);
font2 = new BitmapFont();
font2.setColor(Color.WHITE);
font2.getData().setScale(8);
for (int i = 0; i<numberOfEnemies; i++){
enemyOffSet[i] = (random.nextFloat() - 0.5f) * (Gdx.graphics.getHeight() - 200);
enemyOffSet2[i] = (random.nextFloat() - 0.5f) * (Gdx.graphics.getHeight() - 200);
enemyOffSet3[i] = (random.nextFloat() - 0.5f) * (Gdx.graphics.getHeight() - 200);
enemyX[i] = Gdx.graphics.getWidth() - gargamel1.getWidth() / 2 + i * distance;
enemyCircles[i] = new Circle();
enemyCircles2[i] = new Circle();
enemyCircles3[i] = new Circle();
sound = Gdx.audio.newSound(Gdx.files.internal("lose.ogg"));
}
}
# 1 楼答案
要拥有多个屏幕,必须在主类中扩展
Game
默认情况下,使用“gdx setup.jar”创建libGdx项目时,主类会扩展
ApplicationAdapter
现在有了一个方法:
setScreen(Screen)
。使用此方法,您可以更改屏幕这是我在项目中经常使用的模板。它还会处理旧屏幕:
在这里,我创建了一个新方法:
changeScreen(Screen)
。此方法使用Game
的setScreen
方法设置屏幕,并对旧屏幕进行额外处理现在举个例子,我们需要两个屏幕:
还有一个游戏屏幕,可以简单地显示badlogic图像:
现在我们必须做的最后一件事是在游戏开始时设置屏幕。因此,在我们的主类的
create()
方法(在本例中为MultipleScreen)中,我们添加了:现在,如果游戏结束,我们将回到MenuScreen。但不是每次都创建一个新的MenuScreen,我们可以在我们的主类中添加一个
backToMenu()
方法:在我们的游戏屏幕中,我们现在可以简单地调用:
game.backToMenu();
以更改回菜单屏幕,而无需创建新的菜单屏幕重要
如果我们调用
setScreen()
,将调用show()
方法,而不是类的构造函数因此,在classes dispose()方法中处理的每个资产必须在show()方法中创建,而不是在构造函数中创建,否则,如果第二次显示屏幕,您将没有资产
希望这本小指南能对你有所帮助。 如果您需要更多帮助,可以在Internet上找到一些教程,它们可以在其中更改屏幕:
https://www.gamedevelopment.blog/full-libgdx-game-tutorial-project-setup/
# 2 楼答案
实现这一点的一个好方法是建立国家体系。i、 e.根据你所处的状态(菜单、播放等)更新不同的代码
因此,在渲染方法中,会有一个类似于以下内容的if语句:
在每个相应的函数中,都有该状态的代码。 你可以画完全不同的东西,也可以更新/移动其他东西
如果您熟悉这个概念,可以创建一个
State
类,该类有create()
和render()
方法,在主类中初始化它,并相应地运行每个状态