AssetManager в LibGDX

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


person Alex_Hyzer_Kenoyer    schedule 07.03.2012    source источник


Ответы (1)


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

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

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

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

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

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

Другой вариант — может быть, лучший? — использовать базовый класс, который имеет статическую копию ваших игровых глобальных переменных, а затем все остальные игровые классы наследуются от него. Именно такой подход используется в Replica Island. См. базовый класс и реестр объектов. Replica Island хорошо прокомментирован и стоит попробовать игры для Android и Java.

person Steve Blackwell    schedule 07.03.2012
comment
Большое спасибо, что немного проясняет ситуацию. Я заставил его работать, и я воспользовался вашим предложением и также создал базовый класс, мне это очень нравится, кажется намного чище. Спасибо за помощь! - person Alex_Hyzer_Kenoyer; 08.03.2012