AssetManager в LibGDX - PullRequest
       35

AssetManager в LibGDX

6 голосов
/ 07 марта 2012

Я пытаюсь использовать класс AssetManager в LibGDX, и я понимаю, как он работает, но я пытаюсь реализовать экран загрузки. Я следовал за AssetManagerTest.java файлом здесь , но я с трудом пытаюсь понять, как заставить его работать правильно. Может ли кто-нибудь указать мне правильное направление? Моя цель - загрузить ресурсы (текстуры, звуки, шрифты и т. Д.) И обновить панель с процентом завершения на экране. Я не понимаю ResolutionFileResolver и Resolution[] в приведенной мной ссылке. Для чего они? Моя цель - поддерживать статический класс, который может дать мне доступ ко всем ресурсам, которые мне нужны в моей игре, с любого экрана. Есть ли предпочтительный способ сделать это? Спасибо.

1 Ответ

7 голосов
/ 07 марта 2012

После просмотра источника для ResolutionFileResolver , а также других «преобразователей», я думаю, что это просто способ загрузки текстур, которые лучше всего соответствуют разрешению экрана, но это совпадение основано только на шаблонах имен файлов. ,

Так что в AssetManagerTest у него есть текстуры для экранов размером 320x480, 480x800 и 480x854. Похоже, что каждая группа текстур должна находиться в каталоге с именем «.320480» или «.480800» или «.480854» (хотя имя может быть любым, например «низкий», «высокий» и «широкий»). если это ваши каталоги), и он указывает всю эту информацию при создании массива распознавателей в строке 56 теста.

Преимущество всего этого состоит в том, что когда он вызывает manager.load(), он просто выбирает имя файла, например «data / animation.png». Затем распознаватель находит пакет текстур, наиболее точно соответствующий текущему разрешению экрана, и загружает его.

Я думаю, что остальная часть примера должна быть довольно ясной, по крайней мере, для основ AssetManager. Создайте менеджера, установите загрузчик, позвоните load(), позвоните get(), чтобы использовать его, а затем вызовите unload(), когда закончите.

Для обновления индикатора выполнения вам нужно будет сделать это вручную после каждого вызова для загрузки.

И использование статического класса для управления активами, безусловно, является одной из возможностей. Другой подобный вариант - просто использовать синглтон. У него есть свои ненавистники, но я думаю, что в простом проекте в среде сборки мусора все должно быть в порядке, хотя это примерно то же самое, что публичная статика.

Другой вариант - может быть, лучший? - это использовать базовый класс, который имеет статическую копию ваших игровых глобалов, а затем все другие классы игр наследуются от него. Этот подход используется на острове Реплика. См. базовый класс и реестр объектов . Остров Реплики хорошо прокомментирован и заслуживает внимания для игр на Android и Java.

...