После просмотра источника для ResolutionFileResolver , а также других «преобразователей», я думаю, что это просто способ загрузки текстур, которые лучше всего соответствуют разрешению экрана, но это совпадение основано только на шаблонах имен файлов. ,
Так что в AssetManagerTest
у него есть текстуры для экранов размером 320x480, 480x800 и 480x854. Похоже, что каждая группа текстур должна находиться в каталоге с именем «.320480» или «.480800» или «.480854» (хотя имя может быть любым, например «низкий», «высокий» и «широкий»). если это ваши каталоги), и он указывает всю эту информацию при создании массива распознавателей в строке 56 теста.
Преимущество всего этого состоит в том, что когда он вызывает manager.load()
, он просто выбирает имя файла, например «data / animation.png». Затем распознаватель находит пакет текстур, наиболее точно соответствующий текущему разрешению экрана, и загружает его.
Я думаю, что остальная часть примера должна быть довольно ясной, по крайней мере, для основ AssetManager
. Создайте менеджера, установите загрузчик, позвоните load()
, позвоните get()
, чтобы использовать его, а затем вызовите unload()
, когда закончите.
Для обновления индикатора выполнения вам нужно будет сделать это вручную после каждого вызова для загрузки.
И использование статического класса для управления активами, безусловно, является одной из возможностей. Другой подобный вариант - просто использовать синглтон. У него есть свои ненавистники, но я думаю, что в простом проекте в среде сборки мусора все должно быть в порядке, хотя это примерно то же самое, что публичная статика.
Другой вариант - может быть, лучший? - это использовать базовый класс, который имеет статическую копию ваших игровых глобалов, а затем все другие классы игр наследуются от него. Этот подход используется на острове Реплика. См. базовый класс и реестр объектов . Остров Реплики хорошо прокомментирован и заслуживает внимания для игр на Android и Java.