java - 在一类 MyGdx Game 中编写了整个游戏。我如何制作主菜单? libgdx

标签 java android libgdx

我有一个大问题。我在从 ApplicationAdapter 扩展的同一(一个)类 MyGdxGame 中编写了整个游戏。如何制作主菜单?这样,当打开游戏时,主菜单就会打开,其中 1 个按钮按下后会打开游戏本身(MyGdxGame)?只要告诉我怎么做(创建什么,改变什么)

最佳答案

最好实现高内聚性,但是当您在一个类中编写代码时,内聚性会变得非常低。

使用 ScreenGame 类来实现多个屏幕,如您的情况,如 MainScreenGameScreen , LevelScreen...

但如果您不想实现,请在 MyGdxGame 类中使用不同屏幕的标志。

public enum GameScreen{
    MENU_SCREEN, GAME_SCREEN, LEVELSCREEN;
}

MyGdxGamerender 方法中

public GameScreen currentScreen=GameScreen.MENU_SCREEN;

@Override
public void render() {

    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    if(currentScreen==GameScreen.MENU_SCREEN){

        //render objects for Menu Screen

    }else if(currentScreen==GameScreen.GAME_SCREEN){

        //render objects for Game Screen
    }
}

当您想在其他屏幕上移动时,更改currentScreen的值。

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {

    if(currentScreen==GameScreen.MENU_SCREEN){

        //detect button of MenuScreen by bounds or any other way
        if(check in bound){
            currentScreen==GameScreen.GAME_SCREEN;
        }

    }else if(currentScreen==GameScreen.GAME_SCREEN){

        // for Game Screen
    }
    return false;
}

编辑

Pelocho 建议在枚举中使用抽象方法。

public enum GameScreen{
        MENU_SCREEN{

            @Override
            public void render(MyGdxGame gdxGame) {

            }
        }, GAME_SCREEN{

            @Override
            public void render(MyGdxGame gdxGame) {

            }

        }, LEVELSCREEN{

            @Override
            public void render(MyGdxGame gdxGame) {

            }
        };

        public abstract void render(MyGdxGame gdxGame);
    }

以及MyGdxGamerender方法内部

@Override
public void render() {

    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    currentScreen.render(this);
}

关于java - 在一类 MyGdx Game 中编写了整个游戏。我如何制作主菜单? libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44104852/

相关文章:

android - 一次在 kotlin 中迁移整个 android 项目是否安全?

android - 使用截击监听器时 Activity 泄漏

java - Facebook 与 Android 上的 libgdx 集成

java - DeltaTime 未正确更新?

java - invokeAll() 是 java 7 中的阻塞调用

java - JDK = Java SE && JDK != Java EE?

android - 仅将新项目从 Crashlytics 迁移到 Fabric

java - 多边形无法正确旋转

Java:构建器模式、继承和泛型

java - 如何模拟私有(private)静态内部类?