我的游戏屏幕同时使用Scene2d和普通的libgdx精灵。我使用scene2d作为包含一些表格和文本按钮的暂停菜单。电脑上的一切都还可以。我正在测试游戏的两款手机上的一切都还可以,但我在第三部手机上有一个pb。似乎在重启或两个游戏级别后,应该出现在屏幕上的所有scene2d元素都变黑了。它们仍然是响应式的,这意味着按钮可以完成它们应该做的事情,它们可以旋转并正确执行,但它们都是黑色的。这可能是什么问题?我在电脑或其他手机上没有这个pb。
答案 0 :(得分:2)
您描述的是在重置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和Android static object lifecycle
答案 1 :(得分:1)
我知道这篇文章已经有了最好的答案,但也许这也会对你有所帮助:
Texture is not displayed in the application
主要思想是处置您的资产并在应用程序变得可见时再次加载它们