当前位置: 首页 > 知识库问答 >
问题:

Libgdx多屏幕

龙兴学
2023-03-14

多亏了我在这个论坛上解决其他问题的帮助,我成功地推进了我的项目,但另一个障碍出现在我的道路上。

我有麻烦在libgdx java实现多个屏幕。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,...)。

关于我应该如何构造我的屏幕类的一个例子或一些解释将非常有帮助。我试着实现我自己的屏幕管理器,但不太顺利...还有一些关于我应该如何处理屏幕的提示,因为每次从主菜单到播放或选项菜单时创建屏幕都不是一个好主意。任何想法或代码示例或建议都非常感谢。

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

共有1个答案

山高峰
2023-03-14

假设你有3个屏幕,MainMenuScreen,OptionScreen,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();
 类似资料:
  • 在libGDX中切换屏幕似乎有问题。它会切换到游戏屏幕,但不会切换回主屏幕,也不会切换到屏幕上的游戏。我的游戏课: 我的GameScreen类(实现屏幕): 这就是我如何更改屏幕(不工作): 你可以在这里找到全部来源。

  • 我是Libgdx新手,我编写了一个扩展游戏类的类,问题是游戏中的setScreen()方法没有交换屏幕,因为在我设置屏幕之后,我的游戏仍然只渲染游戏类中渲染方法中的内容,而不是screen类的渲染方法中的内容。代码如下: 如果用户运行此代码,即使在用户触摸(单击)屏幕时更改屏幕,我也只会看到一个红色屏幕

  • 问题内容: 这个问题简短而简单。如何在LibGDX中创建分屏效果。如果我创建了两个摄像机,那么所要做的就是在某处绘制一个摄像机,然后绘制下一个摄像机,覆盖前一个摄像机。然后,我考虑使用多个屏幕,但看起来不起作用,因为它仅支持调整大小,而不支持在窗口中重新定位。我也在使用Box2DDebugRenderer和ShapeRenderer,因此它也需要在拆分屏幕的限制下将其剪切掉。LibGDX网站上似乎

  • 我使用libgdx的PC游戏。我试图使窗口全屏,同时保持原始窗口大小(1024 x 768)。换句话说,我想保留我的1024 x 768,让游戏在屏幕中间居中,只让黑色背景填充在周围。(我不希望我的游戏自动缩放到主机屏幕的高度和宽度的大小。) 我尝试过这个解决方案。但是窗口是按比例缩放的,这不是我想要的=(如何使LibGDX桌面在默认情况下全屏显示 在Libgdx中可以实现吗?非常感谢您提供的任何

  • 问题内容: 大家好,我仍在从事这个libgdx项目的工作,我试图找出将屏幕切换到游戏屏幕的最佳方法。现在,当单击一个按钮时,我需要它来切换到游戏屏幕。我已经看到了一些扩展游戏类的实现方式,但是我不确定这里最好的方法是什么。如果您看到一些可以改进的代码,请告诉我。 这是主要的应用程序类: 问题答案: 这就是我始终执行屏幕切换的方式: 首先,主类需要扩展Game(From ),然后您需要具有一个新的t

  • 我试图改变Libgdx屏幕之间的动画。我想写我的自定义动画(淡入淡出等)。有人能给我个线索吗?我似乎在Libgdx代码中找不到转换的实现。