libGDX:每次重新使用Screens还是创建新实例更好?

时间:2016-04-18 02:59:13

标签: java libgdx

这是我的情况。我有三种不同类型的屏幕:

  1. MainMenuScreen
    • 有一个“开始”按钮,用于切换到GameScreen。还可让玩家更改基本游戏设置。
  2. GameScreen
    • 实际可玩的游戏(玩家角色跑动和跳跃的地方)。
  3. GameOverScreen
    • 播放动画的屏幕,然后显示让玩家再次开始游戏的菜单(即切换到GameScreen)或返回主菜单(即切换到MainMenuScreen)。
  4. 我最好将我的屏幕存储在变量中并在切换屏幕时重复使用它们,或者当我完成它时更好地处理每个屏幕然后创建我打算切换的屏幕类型的新实例到?

    如果屏幕切换更频繁(比如最终幻想或口袋妖怪等游戏中的世界屏幕与战斗屏幕之间),答案会有所不同吗?

    谢谢!

1 个答案:

答案 0 :(得分:5)

在我看来,你应该重复使用经常使用的Screen s并处理并重新创建经常不使用的Screen
在您的示例中,GameScreenGameOverScreenMainMenuScreen都应该重复使用,因为它们彼此直接相连:
一旦玩家开始游戏,就有可能他死了。然后显示GameOverScreen,然后直接显示MainMenuScreen。因此,用户无需手动切换到Screen个。{ 相反,OptionsScreen可以每次处理和重新创建,因为通常只打开OptionScreen几次。它也没有直接连接到任何其他Screen,但用户需要“强制”游戏打开OptionScreen。 但只要没有太多Screen s,重用就不应成为问题 在您的第二个示例中,Screen被更频繁地使用,因此它们肯定会被重用。

修改
正如@EssEllDee所提到的,您还应该使用hide()show()。当您切换Screen时,这些方法会被Libgdx调用,并且它们可用于处置/重新创建重型资源。例如,当您切换到Texture并重新加载时,您可以处置用于游戏的GameOverScreen,当切换到GameScreen时。