我们正在使用libgdx开发一款游戏,我们希望能够切换屏幕。我制作了一个GameOverScreen,它实现了Screen:
public class GameOverScreen implements Screen {
}
我的问题是我不知道如何在我的主课上设置屏幕。我看到的大多数示例都显示了一个扩展游戏的主类(com.badlogic.gdx.Game)。但我们的主类实现ApplicationListener,不扩展游戏:
public class Game implements ApplicationListener {
}
因此,我不能使用来自Game类的setScreen方法。所以我如何能改变屏幕在我的主要类游戏?
主要是你需要3节课
播放屏幕和主菜单屏幕将从抽象屏幕扩展。屏幕管理器根据屏幕代码切换屏幕
****屏幕枚举类****
public enum ScreenEnum {
MAIN_MENU {
public AbstractScreen getScreen(Object... params) {
return new MainMenuScreen();
}
},
PLAY {
public AbstractScreen getScreen(Object... params) {
return new PlayScreen();
}
};
public abstract AbstractScreen getScreen(Object... params);
}
屏幕管理器类
public class ScreenManager {
private static ScreenManager instance;
private Game game;
private ScreenManager() {
super();
}
public static ScreenManager getInstance() {
if (instance == null) {
instance = new ScreenManager();
}
return instance;
}
public void initialize(Game game) {
this.game = game;
}
public void showScreen(ScreenEnum screenEnum, Object... params) {
Screen currentScreen = game.getScreen();
AbstractScreen newScreen = screenEnum.getScreen(params);
newScreen.buildStage();
game.setScreen(newScreen);
// Dispose previous screen
if (currentScreen != null) {
currentScreen.dispose();
}
}
}
AbstarctScreen类(可选类)
public abstract class AbstractScreen implements Screen {
protected AbstractScreen() {
super( );
}
public abstract void buildStage();
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
@Override
public void show() {
}
@Override
public void resize(int width, int height){
}
@Override public void hide() {}
@Override public void pause() {}
@Override public void resume() {}
}
屏幕开关
ScreenManager.getInstance().showScreen(ScreenEnum.PLAY, 0);
ScreenManager.getInstance().showScreen(ScreenEnum.MAIN_MENU, 0);
com.badlogic.gdx.游戏除了实现应用程序监听器之外什么也不做。有一些简单的选择:
>
所以你可以扩展com.badlogic.gdx.游戏,而不是实现应用程序监听器
就像com.badlogic.gdx.游戏一样。例如:
public void setScreen (Screen screen) {
if (this.screen != null) this.screen.hide();
this.screen = screen;
if (this.screen != null) {
this.screen.show();
this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
}
}
使用组合/适配器:在应用程序监听器实现类中创建一个com.badlogic.gdx.游戏字段,并委托您实现的方法。
>
com。糟糕的逻辑。gdx。游戏
只不过是ApplicationListener
,它只有Screen
的一个参考,所以有setScreen()
方法。
使用Game
扩展您的Main(origin)
类,而不是编写自己的实现,因为您需要在游戏中进行Screen
转换。
SE的一些规则:
>
如果你已经用锤子砸过砖头,不要用手去砸砖头。
当我的游戏结束时,我试图改变屏幕到游戏结束屏幕,但它没有这样做,只是闪烁当前的游戏屏幕。 游戏结束画面
在libGDX中切换屏幕似乎有问题。它会切换到游戏屏幕,但不会切换回主屏幕,也不会切换到屏幕上的游戏。我的游戏课: 我的GameScreen类(实现屏幕): 这就是我如何更改屏幕(不工作): 你可以在这里找到全部来源。
问题内容: 大家好,我仍在从事这个libgdx项目的工作,我试图找出将屏幕切换到游戏屏幕的最佳方法。现在,当单击一个按钮时,我需要它来切换到游戏屏幕。我已经看到了一些扩展游戏类的实现方式,但是我不确定这里最好的方法是什么。如果您看到一些可以改进的代码,请告诉我。 这是主要的应用程序类: 问题答案: 这就是我始终执行屏幕切换的方式: 首先,主类需要扩展Game(From ),然后您需要具有一个新的t
大家好,我仍然在做这个libgdx项目,我正在努力找出最好的方法来改变我的游戏屏幕现在,当一个按钮被点击时,我需要它转换到游戏屏幕。我见过一些扩展game类的实现,但我不确定从这里开始最好的方法是什么。如果你看到一些可以改进的代码,请让我知道。 以下是主要的应用程序类:
嗨,我在libgdx切换屏幕时遇到了问题。我正在建造一个小行星游戏克隆。因此,首先呈现我的Main MenuScreen类(使用Fitviewport),然后我调用setScreen()到GameScreen(GameScreen不使用Fitviewport),除了第二个屏幕呈现为使用Fitviewport。如果我调整第二个屏幕的大小,那么整个窗口用于渲染。为什么会发生这种情况?这里有一些图片..
我需要提高游戏屏幕加载时间的Android游戏,使用LibGdx游戏引擎。我已经实现了一些类(ImageProvider和SoundManager),它们负责预加载游戏的资产和音频部分。所以,问题是我如何加载这些游戏资源而不影响游戏屏幕之间的加载时间? 我在网上搜索了这个问题,在Stack上发现了一些类似的问题。 如何减少libgdx中所有资产的加载时间 LibGDX中的AssetManager