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

标签 java libgdx

这是我的案例。我有三种不同类型的屏幕:

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

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

如果屏幕切换更频繁(例如在《最终幻想》或《 Sprite 宝可梦》等游戏中的主世界屏幕和战斗屏幕之间),答案会有所不同吗?

谢谢!

最佳答案

在我看来,您应该重用经常使用的Screen,并处理和重新创建不经常使用的Screen
在您的示例中,GameScreenGameOverScreenMainMenuScreen 都应该被重用,因为它们直接相互连接:
一旦玩家开始游戏,他就有可能死亡。然后显示 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/

相关文章:

java - 如何获取 Autowiring 的bean的范围

java - C++ 到 Java : searching a collection efficiently

java - 自定义着色器导致 Android 黑屏

java - Libgdx - 仅动态着色 Sprite 的一部分

java - 合并网格 opengl 和 libgdx

java - 文本叠加在图像上 libgdx

java - 实现 HashMap<Boolean, Object> : Java 的高效方法

Java8 和 Aspectj 插件不兼容?

java - Docx4j : SpreadsheetMLPackage - java. lang.ExceptionInInitializerError

java - 手机上测试Admob时DEVICE_ID_EMULATOR和TEST_EMULATOR的区别