В моем игровом экране используются сценарии Scene2d и normal libgdx. Я использую scene2d для меню паузы, которые содержат некоторые таблицы и текстовые кнопки. Все в порядке на ПК. Все хорошо также на двух мобильных телефонах, на которых я тестирую игру, но у меня есть pb на третьем телефоне. Похоже, что после перезагрузки или двух уровней игры все элементы scene2d, которые должны появиться на экране, стали черными. Они все еще чувствительны, то есть кнопки выполняют то, что они должны делать, они двигаются, вращаются и выполняются правильно, но все они черные. что может быть проблемой здесь? У меня нет этого pb на компьютере или на других телефонах.Таблицы Scene2d становятся черными на одном телефоне после нескольких сбрасываний игр
ответ
То, что вы описали, является симптомом использования текстуры через сброс контекста OpenGL. Ваше приложение содержит указатели в объектах Libgdx Texture в состоянии 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
Я знаю, что уже есть лучший ответ на этот пост, но, возможно, это будет как-то помочь вам тоже:
Texture is not displayed in the application
основная идея заключается в том, чтобы утилизировать свои активы и загружать их снова, когда приложение становится видимым