Top
CG InspirationMaking ofUnityНовостиСофт

Оптимизации игры в Unity. Часть 2

Продолжаем говорить об производительности вашей игры. Первую часть ищите тут.

Почистите свой код

Эта область очень обширная. Но есть основные моменты, которые вы должны проверить, прежде чем переходить к более специфическим. Вот они:
Объединение обычно используемых объектов. Это позволяет повторно использовать их снова и снова, не удаляя их. Примером этого может быть стрельба, в которой игрок может стрелять физическими пулями. Каждая из этих пуль может быть повторно использована, как только она исчезает.

Coroutines vs Update. Метод обновления вызывается несколько раз в секунду и часто используется для обновления таких вещей, как ввод игрока. Когда Jonathan просматривает код, он иногда обнаруживает, что Update используется для обновления вещей, которые на самом деле не нужно обновлять так часто. Например, не нужно обновлять состояние работоспособности несколько раз в секунду. Его нужно обновить, когда есть изменения в здоровье. Coroutines может действовать вместо метода Update, обновляя значение в определенное время.
Компоненты кэширования. Это то, что каждый должен делать. Обычно это хорошо работает в методах Awake или Start, используя GetComponent. Пример будет примерно таким:

где Text — это компонент, который нужно получить. Не используйте GetComponent несколько раз в методе, когда вы можете кэшировать его один раз и использовать эту переменную во всем скрипте.
Избегайте использования GameObject.Find («MyObjectName»). Обычно это делается для поиска игрового объекта и назначения его некоторой переменной. Если вам нужно искать объект таким образом, лучше использовать GameObject.FindWithTag («MyTag»).
— При тестировании игры одна из первых вещей, на которые вы будете ориентироваться — это Frames Per Second. FPS обычно является общим показателем того, насколько хорошо работает ваша игра. Это число может сильно варьироваться в зависимости от платформы, на которой вы запускаете игру, но вам нужно иметь определенный способ проверить это независимо. Окно статистики может вводить в заблуждение относительно FPS, поэтому лучше всего использовать либо профайлер, либо пользовательский скрипт FPS для отображения на экране во время игры. Здесь вы можете найти несколько примеров скриптов FPS.
Выключить неиспользуемые скрипты. Как и в игре, если вы не используете что-то, выключите его. Есть ли причина постоянно обновлять точки нахождения врага, которого вы даже не видите? Возможно нет. Оставьте только то, что необходимо, отключите остальное.

Запеките свет

Освещение может быть довольно сложной темой, но в целом вы должны использовать минимальное количество светильников, необходимых для достижения желаемого стиля. Свет может быть одним из самых дорогих аспектов игры, поэтому для низкопроизводительных платформ очень плохо работает динамическое освещение.
В Unity 5.6 есть три режима освещения: Realtime, Mixed и Baked. Realtime выглядит лучше всего, но оно очень требовательное. Baked lighting может и должен использоваться, когда это возможно. Теперь у вас не будут тратится ресурсы, чтобы постоянно пересчитывать свет и тени.

Имейте в виду, что вы можете «подделывать» освещение, используя emissive maps, которые заставляют части текстуры излучать свет. Примером этого может служить приборная панель самолета с множеством маленьких огней. Создание точки света для каждого из них было бы невероятно затратно с точки зрения ресурсов, но карта emissive решит этот вопрос.

Используйте эффективные шейдеры

Шейдеры управляют всеми визуальными элементами в вашей игре. Не будем вдаваться в сложности оптимизации шейдерного кода здесь, но вы должны знать, что оптимизированные шейдеры могут значительно повысить производительность, поскольку они не требуют тонны вычислений.
Еще один способ ускорить вашу игру — использовать мобильные дружественные шейдеры даже на более высокопроизводительных платформах. Если вы работаете над мобильной игрой, вам обязательно нужно использовать мобильные шейдеры, потому что они требуют меньше вычислений.

Такие вещи, как «Глобальный туман» и «Рыбий глаз», — это общие эффекты изображения, которые вы, возможно, использовали раньше, чтобы задать настроение в игре. Такие эффекты должны быть оптимизированы в максимально возможной степени, иначе они много берут на себя и игра начинает тормозить.

Включение Instancing

Это относительно новое обновление производительности, которое использует Unity 5.6, но это один из лучших трюков, которые я видел, и он довольно прост в использовании. В стандартном материале (и некоторых других, таких как Mobile и Nature Shaders) вы увидите флажок в самом низу в разделе «Дополнительные параметры», в котором есть пункт Enable Instancing. Вы увидите увеличение производительности, если в вашей сцене есть много игровых объектов, которые используют тот же материал, например, удары пулевых отверстий, деревья и т. д.

Выводы

Существует ещё множество индивидуальных способов улучшить производительность игры, характерной только для одного жанра или стиля, но мы надеемся, что общий обзор общих настроек производительности поможет вам независимо от типа создаваемой вами игры.


Журналист: Simply_Better

ИСТОЧНИК