感谢我在这个论坛上遇到的其他问题的帮助,我设法推进了我的项目,但又出现了另一个障碍。
我在libgdx for java中实现多个屏幕时遇到问题。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,......)。
我应该如何构建屏幕类的示例或一些解释将非常有用。我尝试实现自己的屏幕管理器但是效果不是很好......还有一些指示我应该如何处理屏幕,因为每次从主菜单进入播放或选项菜单时创建屏幕都不是很好理念。任何想法或代码示例或建议都非常感谢。
我现在拥有的是一些类别的游戏画面,当你渲染它们时,它们会在屏幕上绘制一些GUI,但是像后退按钮这样的功能不起作用,因为我不知道如何在它们之间建立链接
答案 0 :(得分:7)
假设您有3个屏幕,MainMenuScreen,OptionsScreen,GameScreen。
首先,您需要在主类中声明它们。
看起来像这样
public class MainClass extends Game implements ApplicationListener {
private GameScreen gameScreen;
private MenuScreen menuScreen;
private OptionsScreen optionsScreen;
@Override
public void create() {
}
setGameScreen()
{
gameScreen=new GameScreen(this);
setScreen(gameScreen);
}
setMenuScreen()
{
menuScreen=new menuScreen(this);
setScreen(menuScreen);
}
setOptionsScreen()
{
optionsScreen=new OptionsScreen(this);
setScreen(gameScreen);
}
@Override
public void dispose() {
super.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
super.render();
}
@Override
public void resize(int width, int height) {
super.resize(width, height);
}
@Override
public void pause() {
super.pause();
}
@Override
public void resume() {
super.resume();
}
}
现在你得到的每个屏幕都需要一个MainClass变量和一个构造函数。
让我们对GameScreen类说,它就像
public class GameScreen implements Screen{
private MainClass mainClass;
public GameScreen(MainClass mc)
{
mainClass=mc;
}
// your methods (show,render, pause, etc)
}
现在,当您想要更改屏幕时,只需在屏幕上使用
mainClass.setMenuScreen();