Профайлер показывает выделение памяти каждый кадр: что в этом коде его создаёт
На боевом экране профайлер показывает выделение памяти в каждом кадре и регулярные короткие просадки примерно раз в несколько секунд. Подозрительный код:
void Update()
{
scoreLabel.text = "Счёт: " + _score;
GetComponent<Animator>().SetFloat("Speed", _speed);
}
Что здесь происходит?
- Строки в C# неизменяемы и потому мусора при склейке не создают: выделения в кадре даёт только Animator
- Счётчик выделений в профайлере показывает общий занятый объём, а не выделение за кадр, так что картина нормальная и просадки вызваны чем-то другим
- Update вызывается слишком часто: обновление подписи и параметров аниматора надо перенести в FixedUpdate, где число вызовов в секунду фиксировано
- Склейка строки создаёт новый объект каждый кадр, а компонент ищется заново: мусор копится, и его сборка даёт периодические просадки
