我使用LibGDX创建的Android应用程序有问题。在第一次发射后,游戏中的纹理部分消失,只有重新启动后(不隐藏和重新打开)一切正常。安装后第一次启动后,它目前只发生一次。如果在已安装的应用程序上安装,一切正常。
我使用atlas进行纹理,它是2048x2048。在项目中,我使用AssetLoader类和静态对象。我看到了一些提示,问题可能是静态的,但是为什么部分纹理正常加载?
如果有人遇到这种问题,请提出建议。
答案 0 :(得分:0)
这称为背景丢失。隐藏时会自动卸载加载和创建的纹理,并且在隐藏和重新打开之间会丢失一些上下文。隐藏后重新启动或杀死活动应用程序将破坏当前的JVM,当您再次打开它将是新的启动并且一切正常。
为了避免这种情况,您可以通过覆盖ApplicationListener类(这是扩展ApplicationListener的主类)上的pause()和resume()方法来手动管理这种情况。你应该在pause()上卸载/处理资产,然后在resume()上重新加载/创建它们。
这不是最好的,但要提出一个想法,你可以在这里看到一个实现的“编辑:”部分:LIBGDX White textures in the first run on android
但我强烈建议避免使用静态字段并使用AssetManager类来加载和获取Textures,TextureAtlases和其他类似的资源。让它为你管理纹理。
看看:https://github.com/libgdx/libgdx/wiki/Managing-your-assets
答案 1 :(得分:0)
我发现了问题。它不在AssetLoader ot Textures中。当我加载游戏对象时,我也在手机资源中重新创建数据,所以当这些数据存在时,所有加载都很好,但如果它是第一次并且需要在手机上创建这些数据,则会导致加载资源出现问题。我只是将“重新创建数据”移动到自己的功能,现在一切正常。