Почему загрузка AssetBundle в память после загрузки и распаковки приводит к сбою результатов в iPad из-за нехватки памяти? - PullRequest
0 голосов
/ 26 апреля 2018

Мы только что закончили 2D-игру в Unity 2D, но изо всех сил пытаемся исправить некоторые серьезные проблемы, связанные с памятью.

Используемая версия Unity: Unity 2017.2.2f1

Мы используем AssetBundles и ресурс по требованию для загрузки пакетов (текстур, листов спрайтов, изображений bg и сцен) со средним размером по 20 МБ каждый.

Мы успешно ограничили размер нашего магазина приложений до 90 МБ. При профилировании проекта в XCode начальная память, занимаемая сборкой, составляет 180 МБ. Но проблема начинается сейчас, когда мы загружаем любой уровень (Asset Bundle)через ресурс по требованию. Использование памяти увеличивается с 180 МБ до 568 МБ.

1. Почему Unity использует 388 МБ памяти после загрузки и загрузки в AssetBundle размером 20 МБ?

2. Почему каждый раз, когда мы загружаем новую сцену, Unity резервирует некоторую память после выгрузки сцены, т.е.очистить выделенные блоки?

3.Сжат ли RGBA 4-битные PVRTC 4-битные в Unity для устройств на iOS?

5.Есть ли какой-либо сторонний SDK для сжатия 2D-текстур и графики GUI для Unity??

Пожалуйста, помогите мне, чтобы я мог доставить проект клиенту другим способом, моя работа находится в опасности: (

Заранее спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018
  1. Проверьте сжатие вашего пакета активов и как вы загружаете свой пакет активов.Сжатые пакеты ресурсов полностью распаковываются в памяти, поэтому рекомендуется использовать сжатие без сжатия или на основе Chunck для пакетов, чтобы избежать скачков памяти.
  2. Использование управляемой загрузкой и выгрузкой памяти Unity может привести к некоторым утечкам памяти, поскольку GC контролирует почтивсе.
  3. PVRTC работает на всех устройствах IOS.
  4. Поскольку вы ориентируетесь на iOS, PVRTexTool - это то, что вам нужно PVRTexTool Скачать
...