Приветствую всех друзья! В прошлой статье я рассказал вам о том, как в Unity можно настроить процесс создания билда, уменьшить его вес, а также создать свой индивидуальный сборщик билда (последняя тема была затронута крайне поверхностно, и мы еще не раз вернемся к ней). Сегодня я поведаю о наиболее известных проблемах при работе с Unity и о том, как их можно решить.
Здесь я буду рассматривать общие проблемы, которые могут возникнуть при использовании Unity. Все проблемы я разделю на секции и оснащу их заголовками для более простого ориентирования. Надеюсь эти знания сэкономят вам время в будущем.
Проблемы специфичные для определённых платформ.
- Отложенный рендеринг отключен, потому что материалы не отображаются корректно для видеокарты Geforce 7300GT на операционной системе OSX 10.6.4. Это происходит из-за бага видеодрайвера.
- На некоторых версиях Windows x64 Unity перестает работать, когда скрипт выдает исключение NullReferenceException. Попробуйте обновить свою винду через системный менеджер обновлений - скорее всего эта ошибка исчезнет.
Редактирование скриптов.
Бывает, что скрипт открывается в редакторе текста по умолчанию установленном в системе, даже когда Visual Studio установлен как редактор скриптов. Такое случается, когда Visual Studio сообщает, что не удалось открыть скрипт. Наиболее распространенной причиной этого является внешний плагин (например, Resharper), отображающий диалоговое окно при запуске и запрашивающий ввод от пользователя. Это приводит к тому, что Visual Studio сообщает, что он не был открыт.
Графика.
Иногда бывает так что у вас малая частота кадров и/или визуальные артефакты. Это может произойти, если драйверы вашей видеокарты не являются актуальными. Убедитесь, что у вас есть последние официальные драйверы от поставщика вашей видеокарты.
Тени.
- Тени требуют поддержки со стороны графического железа (видеокарты).
- Убедитесь, что тени были включены в настройках качества графики (в контекстном меню пройдите по пути Edit\Project Settings и в открывшемся окне выберите пункт Quality), если у пункта Shadows в выпадающем списке выбран пункт Disable – переключите его.
- Тени на Android и iOS платформах имеют ограничения: мягкие тени недоступны, а при прямом рендеринге (forward rendering) только один направленный источник света (directional light) может отбрасывать тени. Количество источников света отбрасывающих тени при отложенном рендеринге (deferred rendering) не ограничено.
Некоторые игровые объекты не отбрасывают и не воспринимают на себе тени.
Компонент игрового объекта Renderer должен иметь включенный пункт Receive Shadows чтобы иметь возможность отрисовывать тени на себе. Кроме того, объект должен иметь включенный пункт Cast Shadows чтобы он сам мог отбрасывать тени на другие объекты (оба этих пункта включены по умолчанию).
Только непрозрачные объекты отбрасывают и принимают на себе тени. Это означает, что игровые объекты, использующие встроенные прозрачные или частичные шейдеры, не будут отбрасывать тени. В большинстве случаев можно использовать прозрачные шейдеры (Transparent Cutout) для таких игровых объектов как заборы, растения и так далее. Если вы используете свои самописные шейдеры, они должны быть освещены пикселями и использовать очередь рендеринга геометрии. Объекты, использующие шейдеры VertexLit, не получают теней, но могут их отбрасывать.
На сегодня это все. Начиная со следующей статьи, мы будем рассматривать различные функции редактора Unity, и первой на очереди будет 2D и 3D режимы работы в Unity. Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!