【问题标题】:LibGdx resume delayLibGdx 恢复延迟
【发布时间】:2014-04-09 09:47:55
【问题描述】:

问题是当我的游戏被隐藏时,恢复时会有延迟。每次重新开始游戏都需要更长的时间。这发生在任何屏幕集上,包括正在加载资产的启动屏幕。游戏恢复到游戏屏幕或启动屏幕或菜单屏幕时,延迟没有区别。这意味着加载大量资产没有问题。我测试了另一款名为“Cut the Rope 2”的游戏,没有这种延迟,游戏立即恢复。

我想补充一点,当我第一次启动应用程序时,没有这样的延迟,它会直接跳到启动屏幕。此外,当我按下后退按钮时,它会重新启动整个应用程序并且也没有延迟。这意味着应用程序恢复时只有延迟,而应用程序第一次启动或重新启动时完全没有延迟。

更新:

我的问题与下面链接中发布的问题完全相同。问题没有在那里解决。 http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=11433&p=51515&hilit=resume+slow#p51515

所以问题是当我的游戏恢复时调用它:

assetManager.finishLoading();

我没有将该代码放在 resume() 中。从上面的链接,我读到它是自动调用的。当您在平板电脑上按下“返回按钮”然后您恢复游戏时,启动应用程序需要一些时间。如果您按下“锁定按钮”然后您恢复游戏,它会立即启动游戏但它会冻结。因此,根据按下的按钮有两种不同的行为。我宁愿立即启动游戏而不是冻结,而是播放我的加载屏幕。有没有办法做到这一点?

【问题讨论】:

  • 我猜你的游戏中有一些Textures,对吧?因此,请阅读本文以获取一些信息:(code.google.com/p/libgdx-users/wiki/…)。我不确定,但这可能是因为您的Textures 被卸载,并且作为管理Textures,它们会自动加载到resume()。此加载过程将需要一些时间。因此,即使您没有在暂停/恢复时手动卸载/加载它们,它们也会被卸载,因此必须自动重新加载。
  • 我确实有纹理和声音。我还使用 AssetManager 加载文件,并且在隐藏应用程序时不会手动卸载它们。如果是你所说的这种情况。那么如何防止延误呢?请记住,在其他游戏中,我测试了“Defender 2”,也没有出现此问题。游戏刚启动,无需等待超过 3 秒。延迟也不是恒定的,每次您恢复我的游戏时它都会增加。它从 1 秒开始,然后您需要等待 2 秒,并且一直在增加。
  • 另外需要注意的是,即使它恢复到只有徽标和文本的初始屏幕,也会发生这种情况。加载它应该不需要很长时间。与割绳子 2 相比,它会立即带您进入游戏地图。
  • 我正在测试更多。到目前为止,我得到的是,在我的 MainMenu 屏幕中评论了 batch.dispose 之后,现在需要恒定的时间来恢复,即 5 秒。但在我的启动画面中,它仍然会增加。这为我提供了如何消除这种增加的线索。并且可能由于文件的大小和重新加载的数量而需要这么多时间。我有 25 个纹理要加载。在我进一步研究之后,我将能够证明你的答案是否解决了我的问题,但你指出了重要的事情,所以谢谢。
  • 好吧,玩完《割绳子2》后,还是很困扰我,第一次启动时加载文件需要更多时间您开始关卡,而在我的情况下,加载它们需要更少的时间,但在恢复时加载它们需要更多时间,而对于该游戏,它是即时的。任何线索为什么?

标签: java android libgdx delay resume


【解决方案1】:

这个问题的解决方法是调用

Texture.setAssetManager(manager);

这样在游戏恢复时不会自动调用 AssetManager.finishLoading()。因此它不会重新加载任何资产。 AssetManager.update 必须手动调用。

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多