Низкий фпс, просадки ФПС

Общие вопросы о Unity3D

Низкий фпс, просадки ФПС

Сообщение EIvanov 13 фев 2024, 17:29

2D игра. В игре возникают просадки фпс. Для простой игры фпс достаточно низкий (в среднем около 140 на рабочей сцене, при 400 на тестовой пустой сцене).
В игре нет сложных скриптов. Вся игра представляет собой набор префабов-картинок (с галкой статик). Есть и гриды/тайлмепы (с галкой статик) по которым нарисован уровень из палитры.
Из физических взаимодействий, коллайдер есть у игрока, который взаимодействует с землей и стенами (коллизии).
У некоторых объектов также есть коллайдеры, но они isTrigger.

Запустил сцену и профайлер.
Раньше я никогда не работал с профайлером в юнити. Посмотрел пару уроков.
Вот изображение профайлера, когда игрок просто стоит на земле.
Изображение

Вот часть кода - контроллера игрока, которая в момент записи, взаимодействует с физикой (земля - определение земли)
Синтаксис:
Используется csharp
   
private void GetPlayerState()
    {
        playerIsGrounded = Physics2D.OverlapCircle(playerGroundCheckfield.position, overlapCircleRadius, whatIsGround | whatIsIce | whatIsSliding);
        playeIsOnIce = Physics2D.OverlapCircle(playerGroundCheckfield.position, overlapCircleRadius, whatIsIce);
        playerIsSliding = Physics2D.OverlapCircle(playerGroundCheckfield.position, overlapCircleRadius, whatIsSliding);
}

    void FixedUpdate()
    {
        GetPlayerState();
}
 


Я гуглил и понял, что FindNewContacts связано с определением контактов - коллизий.
То есть какие то объекты много контактируют, соприкасаются друг с другом из за этого идут лишние расчеты и нагрузка. Могу и ошибаться, но вот так я понял.

Подскажите, в чем может быть проблема? В какую сторону смотреть? На какие объекты обратить внимание (с коллайдерами, без них, статические, гриды-тайлмепы и т.д.)?
Может, есть способ узнать метод, где идет такая нагрузка.

График явно е нормальный, для простого проекта.
EIvanov
UNIт
 
Сообщения: 103
Зарегистрирован: 05 июл 2021, 17:23

Re: Низкий фпс, просадки ФПС

Сообщение Alkos26Rus 13 фев 2024, 20:42

Может куча коллайдеров, из которых например собран уровень, тайлы там всякие с коллайдерами. Нужно методом тыка, включть\откючать объекты на сцене и смотреть что вызывает эти пики.
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Низкий фпс, просадки ФПС

Сообщение Jarico 14 фев 2024, 10:21

Может тикрейт физики большой?
Time->Fixed Timestep = 1/0.02 (дефолт) = 50 раз в секунду

И почему не используешь Physics2D.OverlapCircleNonAlloc вместо Physics2D.OverlapCircle? Первый вариант выдаёт результат в готовый массив, а второй создаёт всегда новый массив
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 13