Libgdx TextureAlias在恢复后返回破碎的纹理



Im创建了一个android游戏,并开始使用TextureAlias作为游戏资产,将其创建为:TextureAtlas(Gdx.files.internal("assets.atlas")),然后通过atlas.findRegion("my_asset")简单地获得AtlasRegions,然后将该区域设置为精灵。一切都很好,纹理渲染得很好,但当我把我的应用程序放在后台(调用方法pausehide(,然后把它放回前台(调用show(后,我的资产被破坏了,它们是灰色的,而不是像在TextureAlias上调用dispose后那样完全黑色-我缺少什么?每次调用show时,我是否应该重新创建TextureAtlas

当你作为安卓用户离开应用程序时,可能会发生两件事。

有一件事肯定会发生,那就是";实际上暂停";,这意味着该应用程序仍在运行,但未处于活动状态。如果安卓需要这些资源;实际上杀死了";即使你认为你的应用程序正在运行。(您可以搜索Android应用程序生命周期了解更多信息(

在第一种情况下,什么都不会发生,GL上下文仍然存在,一切都应该正常。然而,在第二种情况下,原始GL上下文将不存在,这意味着纹理将是半身像。

正确的解决方案是将TextureAtlas加载功能放入游戏的create((函数中,因此只有当应用程序被杀死时才会重新加载,而不是当用户退出并再次进入时。当然,您还需要重建屏幕,使其使用新的纹理。

最新更新