繁体   English   中英

用libgdx设置新屏幕会使我的游戏崩溃?

[英]setting a new screen with libgdx crashes my game?

因此,我似乎一生都无法弄清楚为什么设置新屏幕会导致游戏崩溃,我收到的日志消息似乎很简单,但是我只是找不到它的根源,所以我希望有人可以在这里为我提供帮助。这是日志消息

java(1240,0x1e59cb000) malloc: *** error for object 0x7f8cf4ad2208: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

这是调用setScreen方法的代码,我看不到我在哪里修改释放的对象。希望有人可以启发我

public class GameScreen implements Screen {
//..
public void updateWorld(float deltaTime){

        switch (gameState) {
            case START:
                //..
                break;

            case RUNNING:
                //..
                break;

            case GAMEOVER:
                System.out.println("called");
                //..
                fishy.setGRAVITY(-20);
                fishy.update(deltaTime);

                if (gos == null) gos = new GameOverState(game);
                gos.compareScore(curr_ig_score);
                backgroundMusic.pause();
                if (!gameOver.isPlaying()) gameOver.play();
                fishy.setMOVEMENT_X(0);

                updateGOSButtons();
                break;
            case PAUSED:
                //...
                break;
        }

        //..
    }

public void updateGOSButtons() {
            if (gos.isGoButtonClicked()) {
                gameOver.stop();
                backgroundMusic.play();
                dispose();
                game.setScreen(new GameScreen(game));
            }

            if (gos.isHomeButtonClicked()) {
                gameOver.stop();
                backgroundMusic.play();
                dispose();
                game.setScreen(new MainMenuScreen(game));
            }

            Gdx.input.setInputProcessor(gos.getStage());
    }

}

从另一个线程:

正在发生以下情况之一:

1)您两次释放对象,

2)您正在释放从未分配的指针

3)您正在写一个无效的指针,该指针先前指向一个已经释放的对象

最好的方法是在以下位置放置一个断点: malloc_error_break方法,看看发生了什么。 没有更多信息,我们将无能为力!

最近,我遇到了一个类似的问题,该问题是在渲染周期的中间更改屏幕时引起的。 发生的事情是将当前屏幕隐藏起来并丢弃,然后它将尝试使用舞台和其他已丢弃的对象来渲染该屏幕。 我不得不将set screen方法移到render调用的末尾,问题解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM