Libgdx多个屏幕

And*_*rew 5 graphics user-interface libgdx

感谢我在这个论坛上遇到的其他问题的帮助,我设法推进了我的项目,但又出现了另一个障碍.

我在libgdx for java中实现多个Screen时遇到了麻烦.我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,......).

我应该如何构建我的屏幕类的示例或一些解释将非常有用.我尝试实现自己的屏幕管理器但是效果不是很好......还有一些指示我应该如何处理屏幕,因为每次从主菜单进入播放或选项菜单时创建屏幕都不是很好理念.非常感谢任何想法或代码示例或建议.

我现在拥有的是一些类别的游戏屏幕,当你渲染它们时,它们会在屏幕上绘制一些GUI,但是像后退按钮这样的功能不起作用,因为我不知道如何在它们之间建立链接.

Bol*_*aul 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你得到的每一个屏幕都需要一个MainClass变量和一个构造函数.

让我们说,对于GameScreen类,它会是这样的

public class GameScreen implements Screen{

    private MainClass mainClass;

    public GameScreen(MainClass mc)
    {
        mainClass=mc;
    }
    // your methods (show,render, pause, etc)
}
Run Code Online (Sandbox Code Playgroud)

现在,当您想要更改屏幕时,只需在屏幕上使用即可

mainClass.setMenuScreen();
Run Code Online (Sandbox Code Playgroud)