Многопоточность в libgdx и загрузка ресурсов

1

В настоящее время я пытаюсь сделать экран загрузки для своей игры libgdx, но я не уверен, как это сделать. Я думаю, что мне нужно загрузить все мои данные для игры и отобразить экран загрузки в отдельных потоках, но я не уверен, как создать новый поток. Я думаю об этом неправильно? Любая помощь будет оценена по достоинству.

Теги:
multithreading
libgdx

1 ответ

6
Лучший ответ

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

В учебном пособии описывается, как показывать экран загрузки во время загрузки ваших активов.

До сих пор мы только ставили в очередь активы для загрузки. AssetManager еще ничего не загружает. Чтобы это произошло, мы должны постоянно называть AssetManager # update(), например, в нашем методе ApplicationListener # render():

Пока AssetManager # update() возвращает false, вы знаете, что он по-прежнему загружает активы. Чтобы опросить конкретное состояние загрузки, вы можете использовать AssetManager # getProgress(), который возвращает число от 0 до 1, указывающее процент загруженных активов. В AssetManager есть другие методы, которые предоставляют вам подобную информацию, например AssetManager # getLoadedAssets() или AssetManager # getQueuedAssets(). Вы должны вызвать AssetManager # update(), чтобы продолжить загрузку!

Если вы хотите заблокировать и убедиться, что все активы загружены, вы можете позвонить:

manager.finishLoading();

Это будет заблокировано до тех пор, пока все активы, которые были поставлены в очередь, фактически не загружаются. Kinda поражает цель асинхронной загрузки, но иногда ей может понадобиться (например, загрузка активов, необходимых для отображения самого экрана загрузки).

  • 0
    Это потрясающе. Большое спасибо
  • 0
    Спасибо, очень помогли!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню