LibGDX 安装后第一次启动时出现纹理问题

LibGDX Problems with textures in 1st launch after installing

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

我用图集做贴图,是2048x2048。在项目中,我将 AssetLoader class 与静态对象一起使用。我看到了一些提示,那个问题可能是静态的,但是为什么部分纹理可以正常加载?

如有遇到此类问题的请指教

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

为避免这种情况,您可以通过覆盖 ApplicationListener class(这是您主要的 class 扩展 ApplicationListener)上的 pause() 和 resume() 方法来手动管理这种情况。您应该 unload/dispose 资产在 pause() 上 reload/create 它们在 resume() 上。

这不是最好的,但为了提供一个想法,您可以在此处看到问题的 "EDIT:" 部分的实现:LIBGDX White textures in the first run on android

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

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

我发现了问题。它不在 AssetLoader 或 Textures 中。当我加载游戏对象时,我还在 phone 资源中重新创建数据,因此当此数据存在时,所有加载都正常,但如果是第一次并且需要在 phone 上创建此数据,则会导致加载资源的问题。我只是将 "recreating data" 移动到自己的函数,现在一切正常。