В настоящее время я пытаюсь сделать экран загрузки для своей игры libgdx, но я не уверен, как это сделать. Я думаю, что мне нужно загрузить все мои данные для игры и отобразить экран загрузки в отдельных потоках, но я не уверен, как создать новый поток. Я думаю об этом неправильно? Любая помощь будет оценена по достоинству.
Вы можете использовать AssetManager, который обеспечивает асинхронную загрузку активов. На самом деле существует ряд причин, по которым вы, возможно, захотите использовать диспетчер активов за пределами экрана загрузки.
В учебном пособии описывается, как показывать экран загрузки во время загрузки ваших активов.
До сих пор мы только ставили в очередь активы для загрузки. AssetManager еще ничего не загружает. Чтобы это произошло, мы должны постоянно называть AssetManager # update(), например, в нашем методе ApplicationListener # render():
Пока AssetManager # update() возвращает false, вы знаете, что он по-прежнему загружает активы. Чтобы опросить конкретное состояние загрузки, вы можете использовать AssetManager # getProgress(), который возвращает число от 0 до 1, указывающее процент загруженных активов. В AssetManager есть другие методы, которые предоставляют вам подобную информацию, например AssetManager # getLoadedAssets() или AssetManager # getQueuedAssets(). Вы должны вызвать AssetManager # update(), чтобы продолжить загрузку!
Если вы хотите заблокировать и убедиться, что все активы загружены, вы можете позвонить:
manager.finishLoading();
Это будет заблокировано до тех пор, пока все активы, которые были поставлены в очередь, фактически не загружаются. Kinda поражает цель асинхронной загрузки, но иногда ей может понадобиться (например, загрузка активов, необходимых для отображения самого экрана загрузки).