【问题标题】:LibGDX Problems with textures in 1st launch after installing安装后第一次启动时出现的 LibGDX 纹理问题
【发布时间】:2015-07-11 21:34:12
【问题描述】:

我使用 LibGDX 创建的 android 应用程序有问题。在游戏中的第一次启动后,部分纹理会消失,只有在重新启动(而不是隐藏和重新打开)后才能正常工作。目前仅在安装后第一次启动后发生 1 次。如果安装在已安装的应用程序上,一切正常。

我使用图集作为纹理,它是 2048x2048。在项目中,我使用带有静态对象的 AssetLoader 类。我看到了一些提示,这个问题可能是静态的,但是为什么部分纹理正常加载?

如果有人遇到这种问题,请给个建议。

【问题讨论】:

    标签: java android opengl-es libgdx


    【解决方案1】:

    这称为上下文丢失。您加载和创建的纹理会在您隐藏时自动卸载,并且在隐藏和重新打开之间会丢失一些上下文。隐藏后重新启动或终止活动应用程序将破坏当前的 JVM,当您再次打开时,它将重新启动,一切正常。

    为避免这种情况,您可以通过覆盖 ApplicationListener 类(这是您扩展 ApplicationListener 的主类)上的 pause() 和 resume() 方法来手动管理这种情况。您应该在 pause() 上卸载/处置资产并在 resume() 上重新加载/创建它们。

    这不是最好的,但要给出一个想法,您可以在此处看到有问题的“编辑:”部分的实现:LIBGDX White textures in the first run on android

    但我强烈建议避免使用静态字段并使用 AssetManager 类来加载和获取纹理、TextureAtlases 和其他此类资产。让它为你管理纹理。

    看看:https://github.com/libgdx/libgdx/wiki/Managing-your-assets

    【讨论】:

    • 谢谢,但重写 pause 和 resume 方法并没有帮助。我的游戏已经基本完成,AssetLoader 类很大。我知道 AssetManager 并将在下一个项目中使用它。我认为,重写并没有帮助,因为这种损失不是在隐藏和重新打开之后而是在第一次发布时造成的。之后,我可以尽可能多次隐藏和重新打开我的应用程序,一切都会正常工作..
    • 另一个奇怪的事情是我的商店屏幕加载总是很好,我可以在上面更改游戏对象的纹理,但是当我返回菜单屏幕或游戏屏幕时,什么都没有改变。也许是因为我每次创建商店屏幕时都使用 AssetLoader.loadShop() 并在每次关闭商店屏幕时处理它,但是游戏和菜单屏幕的对象仅在方法 create() AssetLoader.load() 和方法 dispose AssetLoader.dispose 中() (现在还有您在 pause 方法 dispose() 和 resume 方法加载中的建议)。所有音乐、声音和字体,甚至还有一些纹理,都可以正常加载并始终正常工作。
    • 您是否避免使用静态字段?您的商店屏幕加载始终正常,因为正如您所说,每次加载时您都会重新创建它。
    • 不,正如我所说,遗憾的是我已经在 AssetLoader 中静态完成了所有对象。但是我的商店屏幕总是只重新加载他自己的纹理,它还包含其他屏幕中使用的纹理,其中它们工作正常,与菜单屏幕和游戏屏幕不同。而且也很奇怪,它在安装后只发生了 1 次,之后就再也没有发生过。它可能与本地数据或其他任何东西相关联吗?因为它不是应用程序的生命周期,所以它不会在第二次启动后发生。
    • 我尝试为菜单和游戏屏幕加载和处理 AssetLoader,就像商店屏幕一样,但它无论如何都没有帮助。所以看来问题不在于 AssetLoader..
    【解决方案2】:

    我发现了问题。它不在 AssetLoader 和 Textures 中。当我加载游戏对象时,我也在手机资源中重新创建数据,所以当这个数据存在时,一切加载正常,但如果是第一次并且需要在手机上创建这个数据,则会导致加载资源出现问题。我只是将“重新创建数据”移动到自己的函数中,现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多