Загружаем нужные наборы
Управляем моментом загрузки и доступом к результату.
AssetManager регистрирует ресурсы, загружает их и хранит результаты. Набор, или bundle, — именованная группа ресурсов, которую удобно загрузить целиком.
В методе runPreload загрузочного сервиса BootPreloadService.ts ресурсы загружаются последовательно:
await this.sceneContext.engine.bootstrapConfigBundles(request.configBundles);
for (const bundleName of request.assetBundles) {
await this.assets.loadBundle(bundleName);
}
Так код явно определяет порядок групп. Внутри AssetManager запросы ограничены настройками параллельности, повторов и таймаута. Эти параметры не превращают отсутствующий ресурс в допустимое состояние.
Загрузка сцены
Если набор нужен при входе в сцену, укажем его в SceneConfig.assets:
assets: {
bundles: ['images', 'fonts'],
ids: ['json/layouts/scenes/game/layout.json'],
},
Это фрагмент описания сцены. Имена наборов и ID должны присутствовать в манифесте. loadBundle отклоняет неизвестное имя, поэтому опечатка обнаруживается сразу.
load(ids) загружает отдельные ID. has(id) проверяет наличие загруженного результата, get(id) возвращает его. Для JSON дальше используем декодер, а для картинок — стандартный узел или TextureAssetResolver.
loadRequiredBundle(name) после загрузки проверяет наличие каждого результата. Обычный loadBundle сам по себе не гарантирует, что все файлы загрузились: сбои отдельных загрузчиков учитываются внутри координатора. Для обязательных ресурсов выбираем loadRequiredBundle.
Выход из сцены не очищает общий кэш assets: следующая сцена может использовать те же файлы. Публичного метода evict в AssetManager нет.