【问题标题】:Prevent LibGDX game from completely stopping when paused防止 LibGDX 游戏在暂停时完全停止
【发布时间】:2014-02-24 02:17:34
【问题描述】:

在我的 LibGDX 安卓游戏中,如果用户退出游戏(通过按下主页按钮或切换到另一个应用程序),LibGDX 内置的pause() 方法应该会运行。现在,这很好,而且效果也很好。我的问题是,如果我退出游戏做任何事情,然后重新加入游戏,它会完全重新启动应用程序(有点像每次你在吃豆人游戏的中间退出并重新加入你的分数会是零,所有的点都会回来)。对于我的屏幕切换,需要每次用户退出时游戏都不会重新启动,而只是进入相应的状态以实际模拟“暂停”游戏。如何阻止 LibGDX/Android 在用户退出时完全终止游戏,而只是暂停它?

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    libGDX 应用程序生命周期与ApplicationListener 接口中记录的 Android Activity 生命周期相匹配,因此您应该期待相同的行为。当你在 libGDX 游戏中按下主页按钮时,将调用 pause 方法,这与 Android 中的 onPause 相同。游戏将进入后台,但会留在内存中。但是,这并不能保证,并且操作系统可能会为其他应用程序释放游戏内存,确实没有办法解决这个问题。如果游戏回到前台并重新启动,您需要从暂停时加载游戏状态。

    我自己写了article on how to save and load the game state using Json in libGDX,也许对你有用。

    【讨论】:

    • 如果没有简单的方法可以做到这一点,那么许多其他应用程序都是这样做的吗?我没想到我会认为一件如此不正统的简单事情。我将把这个问题保持开放一段时间,看看我是否得到任何其他答案,但我会阅读你的文章并考虑它。谢谢:P
    • 为了帮助防止操作系统释放资源,您还可以尝试使游戏内存配置文件尽可能小。在暂停方法中尝试卸载游戏声音和图形资产,较小的内存配置文件将不太可能被操作系统释放。然而,这仍然不能保证,但它可能是更好的用户体验。
    • 如果我要在 Google 上搜索其他处理此问题的方法,我会搜索什么?我的很多搜索结果都毫无价值,我想在最终选择之前先看看替代品。
    • 如果你搜索一下,libGDX 论坛上有一些讨论。我确实找到了相关的:badlogicgames.com/forum/viewtopic.php?f=11&t=12310
    【解决方案2】:

    您应该使用 Asset Manager 来防止它,这里有一个很好的教程: http://code.google.com/p/libgdx/wiki/AssetManager

    官方文档: http://code.google.com/p/libgdx/wiki/AssetManager

    使用资产管理器加载所有纹理

    【讨论】:

    • 这将解决应用资产的问题,但不会解决保存游戏状态的问题 - 您需要自己保存游戏状态。
    【解决方案3】:

    我有同样的问题,但我通过以下方式找到了解决方案:
    开发者选项中的禁用选项称为
    - 不要保留活动(用户离开后立即销毁每个活动)

    【讨论】:

    • 这只会延迟Android操作系统释放您的应用程序资源和内存的情况,不会修复它。设置此开发人员选项的目的是让您可以确认您的应用在这种情况发生时成功处理,如上面 Steven Trigg 的回答中所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2014-04-17
    • 1970-01-01
    • 2016-01-09
    • 2014-11-07
    • 1970-01-01
    相关资源
    最近更新 更多