0

我有一个游戏,当我进入 GameScreen 时,它很快变得非常缓慢。在 GameScreen 上,如果我什么都不做并观看,FPS 会下降到 10 以下并在大约 30 秒内停留在那里。我一直在查看我的代码,我想我已经将它缩小到一个部分,但对我来说它为什么不工作或如何修复它是没有意义的。

start_button = new TextButton("Start", Resources.getSkin());
    start_button.setWidth(75);
    start_button.setHeight(25);
    start_button.setX(FRUSTUM_WIDTH / 10); 
    start_button.setY(FRUSTUM_HEIGHT / 4);

    ...

    stage.addActor(start_button);
    stage.addActor(pause_button);
    stage.addActor(reset_button);
    stage.addActor(platform_button);

在我的 GameScreen 的渲染方法中,我调用了一个方法,并在该方法中创建了四个文本按钮。当我将按钮添加到舞台时,似乎有问题的代码部分是最后四行。如果我注释掉这几行,游戏可以正常运行,FPS一直是60。如果我只注释掉三行,并在舞台上添加一个按钮,FPS仍然会下降到10以下,但需要更长的时间和最终飙升至 60。

为什么这些线会减慢游戏速度?

4

1 回答 1

4

如果您在 Gamescreen 的渲染方法中执行所有这些操作,那么这就是您的错误。

因为每次您创建新按钮并将其添加到舞台时,这肯定是不好的。每次你添加一些东西到舞台上,它的列表都会增加,如果取决于你的渲染方法被调用的频率,列表会增加,处理该列表的时间也会增加。

不要忘记垃圾收集器,因为正在制作大量对象,并且当垃圾收集器被调用时,您的 fps 肯定会降低。

于 2013-06-27T17:58:02.580 回答