当前位置: 首页 > 知识库问答 >
问题:

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

谢运良
2023-03-14

这是我的箱子。我有三种不同类型的屏幕:

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

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

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

    谢谢

共有1个答案

韩明德
2023-03-14

在我看来,你应该重用经常使用的屏幕,并处理和重新创建不经常使用的屏幕。
在你的例子中,游戏屏幕、游戏屏幕和主菜单屏幕应该所有这些都可以重复使用,因为它们彼此直接相连:
一旦玩家开始游戏,他就有可能死亡。然后显示GameOverScreen,然后直接显示Main MenuScreen。所以用户不需要手动切换到这些屏幕。
相反,选项屏幕可以每次被处理和重新创建,因为通常你只打开几次。同样它不直接连接到任何其他屏幕,但是用户需要强制游戏打开OptionScreen。但是只要没有太多的屏幕,重用就不会是问题。
在第二个例子中,屏幕的使用频率更高,所以它们肯定应该被重用。

编辑:
正如@EssEllDee提到的,您还应该使用hide()show()。当您切换屏幕时,Libgdx将调用这些方法,它们可用于处理/重新创建重资源。例如,当您切换到GameOverScreen并在切换到GameScreen时重新加载用于游戏的纹理时,您可能会处理这些纹理。

 类似资料:
  • 多亏了我在这个论坛上解决其他问题的帮助,我成功地推进了我的项目,但另一个障碍出现在我的道路上。 我有麻烦在libgdx java实现多个屏幕。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,...)。 关于我应该如何构造我的屏幕类的一个例子或一些解释将非常有帮助。我试着实现我自己的屏幕管理器,但不太顺利...还有一些关于我应该如何处理屏幕的提示,因为每次从主菜单到播放或选

  • 我想重新绘制我的屏幕。到目前为止,它所做的只是在第一个屏幕上的头部应该在的地方显示一个点。这很好,但是我在代码中写了我想每秒将头部向下移动10个像素。我正在打印头部应该在的位置,在命令提示符中它显示y值确实在增加。但是在我的屏幕上,头部没有移动。 我尝试过使用revalidate方法,尝试扩展canvas类而不是jframe,我尝试过只为paint方法使用不同的类,我尝试过用paintCompon

  • 在libGDX中切换屏幕似乎有问题。它会切换到游戏屏幕,但不会切换回主屏幕,也不会切换到屏幕上的游戏。我的游戏课: 我的GameScreen类(实现屏幕): 这就是我如何更改屏幕(不工作): 你可以在这里找到全部来源。

  • 我刚刚开始学习oAuth2授权来保护我的API。这个过程相当复杂。我的API是使用泽西和Apache Oltu作为oAuth2授权开发的。现在,可以生成令牌,但是,每次我尝试生成新令牌时,服务器都会创建一个@Application ationScoped bean的新实例。这是我从互联网上获得的bean代码: 这是授权代码: 如您所见,这里有数据库的@Inject注释,在代码的某些部分中调用了ad

  • 使用自定义比较器,每次实例化比较器,而不是将其创建为常量(使用匿名类)并使用单个实例,有什么好处吗?我一直认为每次创建一个新实例没有什么好处,并且一直采用选项2(静态final字段中的单个实例)。 这里的假设是没有状态需要保留在比较器中。 如果do某物()被称为很多呢?如果do某物()从多个线程被调用怎么办?如果CUSTOM_COMPARATOR被拉到一个普通的班级里,公开而不是私下呢?

  • 我正在开发一款新游戏,我正在用LibGDX实现屏幕。 我对触摸屏和触摸屏的结合有点迷恋。 我的渲染方法中包含以下内容: 目前我有4个不同的屏幕,当isTouch被触发时,它们都发生了变化,问题是在我触摸第一个屏幕一次后,它从屏幕1变成了4。我试图将输入处理器设置为空,但它仍然从屏幕1跳到4,而无需在每个屏幕上等待。屏幕1上的触摸似乎也会在屏幕2 3和4上自动触发。如何重置输入处理器或在下一个屏幕加