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