Я использую Unity AssetBundles для асинхронной загрузки.На iOS это, кажется, вызывает утечку памяти.Каждый раз, когда я загружаю новый пакет, он добавляется в используемую память, но, кажется, никогда не освобождает предыдущую память, даже если вызываются функции unload и destroy.Я не использую WWW на iOS, потому что это не казалось необходимым в Unity 5.6.7.Загрузка работает просто отлично, просто проблема с выгрузкой.
Я прошел и сжал все ресурсы для iOS, чтобы я мог продвинуться дальше в игре.Это все еще в конечном счете терпит крах на мне, потому что у него заканчивается память.Если он действительно выгружал ресурсы, он никогда не должен использовать достаточно памяти для сбоя.
Вот как выглядит моя функция UnloadBundle:
public void UnloadBundle(string bundleName)
{
if(!m_bundles.ContainsKey(bundleName)) return;
Hashtable bundle = (Hashtable)m_bundles[bundleName];
if (bundle.ContainsKey("asset"))
{
AssetBundle assetBundle = (AssetBundle)bundle["asset"];
assetBundle.Unload(true);
Destroy(assetBundle);
}
Resources.UnloadUnusedAssets();
m_bundles.Remove(bundleName);
}
Она должна выгрузить пакет и удалить ресурсы из памятикогда UnloadBundle("bundlename");
называется.Вместо этого он не освобождает память и продолжает расти.Игра начинается с ~ 1 ГБ используемой памяти и медленно поднимается до ~ 1,4 ГБ и вылетает на iPhone 7.