Как загрузить все файлы типа PNG из директории через AssetDatabase.LoadAllAssetsAtPath?
Суть в том, что добавлять графику в ресурсы нельзя (вот такое ограничение). Нужно загрузить через выше указанный метод все файлы типа .PNG в указанной директории. Может регулярные выражения использовать? Или есть способ проще? Если регулярка - помогите составить, пожалуйста. Не разбирался с ними толком.
Даниил Басманов, есть графика которую мне нужно подгружать в рантайме, однако переносить ее в ресурсы - плохое решение. Я искал варианты как можно обойти это.
как и написали ниже, подгружаемые в приложение ассеты (а так же патчи потом на графику и материалы и тд) - это все делается через AssetBundles и у юнити официальный тутор и дока по ним очень даже годные.
Качаете картинку с помощью WWW (или UnityWebRequest) и достаёте текстуру с помощью WWW.LoadImageIntoTexture. Неархивированные картинки могут долго грузиться, но, если их у вас не очень много, это может быть самым простым вариантом.
Качаете зазипованную картинку, берёте чистые байты напрямую из WWW.bytes, разархивируете с помощью плагина (например этого), потом грузите в текстуру с помощью ImageConversion.LoadImage. Нужно быть аккуратным во время процесса скачивания-разархивирования, чтобы не держать одновременно в памяти слишком много копий картинки в разных форматах, но, в целом, это самый гибкий и удобный вариант.
Собираете AssetBundle, качаете с помощью UnityWebRequest.GetAssetBundle, достаёте текстуру с помощью AssetBundle.LoadAsset, выгружаете бандл с помощью AssetBundle.Unload. Для картинок бандлы не очень подходят, их неудобно собирать и для каждой платформы нужно собирать свой бандл. AssetBundle Manager может немного помочь, но на сервере, например, их автоматически просто так не соберёшь. С другой стороны, бандлы поддерживают версионность из коробки, и в новых версиях юнити появились новые форматы сжатия. Я бандлы для картинок давно не пробовал, возможно, процесс распаковки занимает меньше места в памяти по с равнению с зипом.
AssetBundles вроде подходит для этого. Но их все равно придется откуда-то грузить. С удаленного сервера или из ресурсов. Либо класть файлы в Streaming Assets, но они все равно так или иначе попадут в сборку.