Ответ 1
Это не помогло. У меня все еще есть шипы, и они все равно принимают 100 + мс. Какие точно идет и что я могу сделать, чтобы оптимизировать свою игру?
С System.GC.Collect
вы просто вынуждаете сбор мусора. Если вы выделили много памяти для освобождения от последнего сбора, вы не сможете избежать всплесков. Это полезно только для того, чтобы попытаться распределить сборку мусора с течением времени, избегая массивного освобождения.
Я динамически создаю и уничтожаю много GameObjects в своем игра. Это может быть проблема?
Возможно, это может быть проблемой.
Некоторые подсказки:
- Постарайтесь выделить (
LoadResource
иInstantiate
) как можно больше ресурсов в начале вашего приложения. Если требуемая память не слишком велика, вы можете просто создать все необходимые ресурсы и отключить их по требованию. Если требования к ресурсной памяти огромны, это невозможно. - Избегайте входящих вызовов
Instantiate
иDestroy
. Создайте пул объекта, в котором запускается набор ресурсов при запуске приложения. Включите необходимые ресурсы и отключите все остальное. Вместо того, чтобы уничтожить объект, выпустите его в пул, чтобы его можно было отключить и повторно использовать по требованию. - Избегайте входящих вызовов
Resources.UnloadUnusedAssets
. Это может только увеличить время, необходимое для создания нового ресурса, если вы ранее его выпустили. Полезно использовать opitmize memory, но называть его с интервалами с интервалом или каждый раз, когда вы уничтожаете объект, нет смысла.