几次游戏重置后,Scene2d 表在一个 phone 上变黑

Scene2d tables turn black on one phone after a few game resets

我的游戏画面同时使用了 Scene2d 和普通 libgdx 精灵。我将 scene2d 用于包含一些表格和文本按钮的暂停菜单。 pc上一切正常。在两个手机 phone 上也一切正常,我正在测试游戏,但我在第三个 phone 上有 pb。似乎在重新启动或两次游戏关卡后,所有应该出现在屏幕上的 scene2d 元素都变黑了。它们仍然是响应式的,这意味着按钮做它们应该做的事情,它们移动旋转并正确执行但它们都是黑色的。这里可能是什么问题?我的电脑或其他 phones.

上没有此 pb

您所描述的是在 OpenGL 上下文重置时使用纹理的症状。您的应用程序在 Libgdx 纹理对象中包含指向 OpenGL 状态的指针,当 OpenGL 设备移交给另一个应用程序时,您的指针将变得陈旧。

LibGDX 通常可以很好地通过简单的重置来恢复状态,但是有几种方法会导致问题。最常见的是 (1) 将 LibGDX OpenGL 状态(例如,纹理)存储到 static 属性 中。 JVM 将在应用程序实例中重复使用,因此 LibGDX 无法判断此静态对象已过时。有关如何触发不同生命周期的详细信息,请参阅 http://bitiotic.com/blog/2013/05/23/libgdx-and-android-application-lifecycle/

In game Images disappear on Android device if i run from widget, but not when I install apk first time and Android static object lifecycle

我知道这个 post 已经有了最佳答案,但也许这也会以某种方式帮助你:

主要思想是处理您的资产并在应用程序可见时再次加载它们