这是我的案例。我有三种不同类型的屏幕:
- 主菜单屏幕
- 有一个用于切换到 GameScreen 的“开始”按钮。还允许玩家更改基本游戏设置。
- 游戏画面
- 实际可玩的游戏(玩家角色在其中奔跑和跳跃)。
- GameOverScreen
- 播放动画然后显示菜单的屏幕,让玩家可以再次开始游戏(即切换到 GameScreen)或返回主菜单(即切换到 MainMenuScreen)。
我是最好将我的屏幕存储在变量中并在切换屏幕时重用它们,还是最好在我完成每个屏幕后处理它,然后创建一个我打算切换的屏幕类型的新实例到?
如果屏幕切换更频繁(例如在《最终幻想》或《 Sprite 宝可梦》等游戏中的主世界屏幕和战斗屏幕之间),答案会有所不同吗?
谢谢!
最佳答案
在我看来,您应该重用经常使用的Screen
,并处理和重新创建不经常使用的Screen
。
在您的示例中,GameScreen
、GameOverScreen
和 MainMenuScreen
都应该被重用,因为它们直接相互连接:
一旦玩家开始游戏,他就有可能死亡。然后显示 GameOverScreen
,紧接着显示 MainMenuScreen
。所以用户不需要手动切换到那些Screen
。
相反,OptionsScreen
可以每次都被处理和重新创建,因为通常您只打开 OptionScreen
几次。此外,它不直接连接到任何其他 Screen
,但用户需要“强制”游戏打开 OptionScreen
。
但是只要 Screen
不是太多,重用应该不是问题。
在您的第二个示例中,Screen
的使用频率更高,因此绝对应该重用它们。
编辑:
正如@EssEllDee 提到的,您还应该使用hide()
和show()
。当您切换 Screen
时,Libgdx 会调用这些方法,它们可用于处理/重新创建大量资源。例如,当您切换到 GameOverScreen
并重新加载它们时,您可能会处理用于游戏的 Texture
,当切换到 GameScreen
时。
关于java - libGDX:每次重用 Screens 还是创建新实例更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36684777/