@youkerni
Unity3D developer

Как загрузить все файлы типа PNG из директории через AssetDatabase.LoadAllAssetsAtPath?

Суть в том, что добавлять графику в ресурсы нельзя (вот такое ограничение). Нужно загрузить через выше указанный метод все файлы типа .PNG в указанной директории. Может регулярные выражения использовать? Или есть способ проще? Если регулярка - помогите составить, пожалуйста. Не разбирался с ними толком.
  • Вопрос задан
  • 404 просмотра
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Вариантов несколько:
  1. Качаете картинку с помощью WWW (или UnityWebRequest) и достаёте текстуру с помощью WWW.LoadImageIntoTexture. Неархивированные картинки могут долго грузиться, но, если их у вас не очень много, это может быть самым простым вариантом.
  2. Качаете зазипованную картинку, берёте чистые байты напрямую из WWW.bytes, разархивируете с помощью плагина (например этого), потом грузите в текстуру с помощью ImageConversion.LoadImage. Нужно быть аккуратным во время процесса скачивания-разархивирования, чтобы не держать одновременно в памяти слишком много копий картинки в разных форматах, но, в целом, это самый гибкий и удобный вариант.
  3. Собираете AssetBundle, качаете с помощью UnityWebRequest.GetAssetBundle, достаёте текстуру с помощью AssetBundle.LoadAsset, выгружаете бандл с помощью AssetBundle.Unload. Для картинок бандлы не очень подходят, их неудобно собирать и для каждой платформы нужно собирать свой бандл. AssetBundle Manager может немного помочь, но на сервере, например, их автоматически просто так не соберёшь. С другой стороны, бандлы поддерживают версионность из коробки, и в новых версиях юнити появились новые форматы сжатия. Я бандлы для картинок давно не пробовал, возможно, процесс распаковки занимает меньше места в памяти по с равнению с зипом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
flexer1992
@flexer1992
Unity Developer
AssetBundles вроде подходит для этого. Но их все равно придется откуда-то грузить. С удаленного сервера или из ресурсов. Либо класть файлы в Streaming Assets, но они все равно так или иначе попадут в сборку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы