При разработке собственных игр есть вероятность, столкнутся с проблемами оптимизации, т.е. будут ли у вас все модели низкополигонными(Low Polly) или даже отсутствие объемных эффектов и частиц, игра все равно не работает должным образом на любых устройствах. Что бы избежать таких проблем, существуют основные правила или приемы оптимизации игр в Unity.
Первым делом, проверьте показатель “draw calls” в окне Profiler; если он составляет больше нескольких тысяч (для PC) или нескольких сотен (для мобильных устройств), то вам требуется оптимизация игровых объектов.
Вот несколько основных приемов и советов по оптимизации игр.
Текстуры и материалами.
Уменьшите количество различных материалов в сцене — используйте один материал для нескольких объектов,
Шейдеры для материалов используйте из категории Mobile/ — т.к. Они прекрасно работают и на не мобильных платформ, но являются упрощёнными версиями более сложных шейдеров.
Используйте сжатие текстур, когда это возможно, а также отдавайте предпочтение 16-битным текстурами перед 32-битными.
Используйте меньше текстур.
Настройка игрового мира.
Туман (Fog) – очень сильно нагрузит вашу игру,
Для не статических объектов с коллайдерами старайтесь использовать Rigibody в режиме isKinematic.
Используйте один источник света, а для отдельных затемнений карты используйте Lightmap`ы.
GPU обрабатывает слишком много вершин. Какое количество вершин является нормальным, определяется GPU и набором вертексных шейдеров. Можно посоветовать использовать не более 100 тысяч для мобильных устройств и не более нескольких миллионов полигонов для PC.
Сохраняйте количество вершин между 200 000 и 3 000 000 в каждом кадре, если целевая платформа — PC.
Установите свойство Static для неподвижных объектов, чтобы использовать внутреннею оптимизацию static batching.
Используйте скайбоксы для имитации далеко расположенной геометрии.
Тени в реальном времени хорошо выглядят, но они могут сильно снижать производительность, одновременно добавляя дополнительные draw calls для CPU и дополнительную обработку для GPU.
Настройка terrain.
Старайтесь не использовать большие размеры карт,
Установите значение pixel error максимальное значение,
Настройте отображение растительности, деревьев и объектов следующими параметрами:
- Detail Density — Количество объектов деталей/травы в данной условной единице площади. Можно снизить значение для снижения потребления ресурсов на рендеринг,
- Detail Distance — Расстояние (от камеры), после которого детали будут отсекаться,
- Tree Distance — Расстояние (от камеры), за которым деревья будут отсекаться,
- Fade length — Расстояние перехода деревьев из 3D объектов в плоские спрайты,
- Max Mesh Trees — Максимальное количество видимых деревьев, которые будут представлены в качестве полноценных 3D мешей. После этого предела, деревья будут заменяться плоскими спрайтами.
Скрипты.
Метод FixedUpdate больше подойдет для небольших проверок относящиеся к физике,
CompareTag быстрее делает проверку тэга по имени,
Делайте как можно меньше вызовов thisTransform.forward или position, лучше эти значения один раз получить в Update,
(thisTransform.position — target.position).sqrMagnitude быстрее Vector3.Distance,
Старайтесь для включение скрипта на объекте при возможности использовать не GetComponent(…).enabled с заранее отключенным скриптом, а AddComponent(…) при заранее не повешенном скрипте на объекте,
Используйте статические переменные.
Заключение.
Если стараться придерживаться этих правил, можно достаточно существенно оптимизировать вашу игру.
Возможно, здесь указаны не все методы, если вам есть что добавить или вы считаете что какой то способ не подходит для оптимизации, пишите нам в комментариях. Удачных проектов!
🌟 Видео
Оптимизация игры на Unity, часть 1. BatchingСкачать
Оптимизация игр на UnityСкачать
Как ОПТИМИЗИРОВАТЬ игру на UnityСкачать
9 СОВЕТОВ ОПТИМИЗАЦИИ ИГРЫ | UnityСкачать
Оптимизация игры в Unity. Повышаем FPSСкачать
Оптимизация игр на unity. Material instancingСкачать
Динамическая оптимизация в UNITY! GPU instancingСкачать
Как сделать оптимизацию игры в Unity 3D // Occlusion CullingСкачать
ОПТИМИЗАЦИЯ ИГРЫ НА ЮНИТИСкачать
Оптимизация игры на Unity, часть 3 - Код. ProfilerСкачать
Как повысить фпс в игре на Unity под андроид. Оптимизация игры на Unity.Скачать
Оптимизация игры на Unity, часть 2. TerrainСкачать
Оптимизация игры в Unity от 100 до 2000 fps. Объединение объектов и свет /Как создать игру [Урок 87]Скачать
КАК ОПТИМИЗИРОВАТЬ ИГРУ НА UNITY?Скачать
Игра на Unity | Оптимизация освещения сцены | Урок 14Скачать
Оптимизация игры на Unity. Universal Render PipelineСкачать
Оптимизация игры на Unity. ФизикаСкачать
Оптимизация производительности в Unity с помощью Occlusion Culling / Как создать игру [Урок 79]Скачать
Оптимизация игры на Unity, часть 5 - 3D модели. Текстурный атлас. Объединение мешейСкачать