I am working on a cross-platform app for iOS / Android, that comes with 100 sprite icons that are 512x512. We want to continue to add icons that users can download, reaching probably 1000 icons or more in the future. I was hoping I could just download PNGs and add to a growing folder on the device but in some initial testing using the StreamingAssets folder, loading PNGs from the device at run-time creates bad performance hiccups that are not acceptable, that do not happen if they are in “resources” folder.
I understand AssetBundles exist, but they are not cross platform, which makes them either worthless or at best, a huge pain to maintain different bundles for every platform. Also, from my understanding after reading in forums, the entire bundle is loaded into memory, so if we do ten 100 icon asset bundles, and I need to pull 5 from each bundle, it will most likely kill any mobile device memory trying to load 1000 (512x512) textures at once just so I can grab 5 from each pack. I would also rather be able to grab just the relevant icons needed for a specific level based on a DB that may change, instead of having to pre-package them.
The only other thing I could think of is perhaps creating texture assets at run-time out of the PNGs and caching those, but I don’t see any mechanism to do that? At least that way there’s only a processing time when they are first downloaded, if it were possible.
I feel like I am missing something obvious here on the “right” way to do this and would greatly appreciate any help.