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

hit*_*ere 5 java libgdx

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

  1. MainMenuScreen
    • 有一个"开始"按钮,用于切换到GameScreen.还可让玩家更改基本游戏设置.
  2. GameScreen
    • 实际可玩的游戏(玩家角色跑动和跳跃的地方).
  3. GameOverScreen
    • 播放动画的屏幕然后显示一个菜单,让玩家再次启动游戏(即切换到GameScreen)或返回主菜单(即切换到MainMenuScreen).

我最好将我的屏幕存储在变量中并在切换屏幕时重复使用它们,或者当我完成它时更好地处理每个屏幕然后创建我打算切换到的屏幕类型的新实例?

在屏幕切换更频繁的情况下(例如在最终幻想或口袋妖怪游戏中的超级世界屏幕和战斗屏幕之间),答案会有所不同吗?

谢谢!

Spr*_*bua 5

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

编辑:
正如@EssEllDee提到的,你也应该使用hide()show().当你切换时,这些方法会被Libgdx调用,Screen它们可以用来处理/重新创建繁重的资源.例如,Texture当你切换到GameOverScreen并重新加载它们时,你可能会把它们用于游戏,当切换到时GameScreen.

  • 除此之外,还要使用`onHide()`和`onShow()`方法,这些方法会自动调用. (2认同)
  • @EssEllDee你是对的.此方法可用于处置/重新创建"重"资源. (2认同)