设置新屏幕时崩溃

Crash when setting a new screen

在我即将完成的游戏中,我想在游戏结束时设置一个新屏幕。我的游戏结束方法:

    private void gameOver(Label score) {
    for (Body body : worldBodies) {
        world.destroyBody(body);
    }
    dispose();
    ((Game) Gdx.app.getApplicationListener()).setScreen(new GameOver());
}

只要调用该方法,屏幕就会冻结一秒钟,并且游戏会崩溃并显示以下语句:

JNI DETECTED ERROR IN APPLICATION 
09-02 22:04:34.036      391-425/com.joelbrun.jetskirider.android A/libc﹕ Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 425 (GLThread 29501)

尝试更新您的代码以匹配以下内容:

private void gameOver(Label score) {
    for (Body body : worldBodies) {
        world.destroyBody(body);
    }
    dispose();
    myGame.setScreen(new GameOver());
}

第一个问题是你是 disposing/loading 循环的 GameOver 屏幕 inside 而不是 after它。

第二个问题是您拨打 Gdx.app.getApplicationListener()。每次你调用它 returns 你的 Game 的一个新实例。相反,您需要保留对您的游戏的引用并使用它。

如果您仍然遇到同样的错误,请确保您正确地调用了 dispose()。如果资源在释放之前就被处理掉,那么您可能会遇到一些非常严重的崩溃。