Unity поддерживает множество редакторов кода, включая JetBrains Rider, Atom, а также Microsoft Visual Studio Code и Visual Studio. Visual Studio - это встроенный пакет, который по умолчанию устанавливается вместе с редактором Unity.
В этой статье приведены советы по использованию 2022 версии отладчика Microsoft Visual Studio, который позволяет эффективно исправлять ошибки в коде. Если вы хотите узнать больше об общих советах по повышению производительности в Visual Studio, ознакомьтесь с нашей статьей в блоге "10 способов ускорить рабочие процессы в Visual Studio".
Visual Studio 2022 имеет встроенную поддержку Unity, что позволяет легко писать и редактировать скрипты, получать доступ к специфическим для Unity функциям и отлаживать код игры, не покидая IDE. Он предоставляет такие функции, как завершение кода IntelliSense, подсветка синтаксиса и фрагменты кода, которые помогают писать код быстрее и эффективнее. Кроме того, вы получаете инструменты отладки, включая возможность устанавливать точки останова, просматривать код, проверять переменные и оценивать выражения во время выполнения.
Visual Studio доступна в нескольких версиях, включая бесплатную версию для сообщества.
Эта статья основана на версии Visual Studio 2022. Версия 2019 года имеет те же функции, но скриншоты будут немного отличаться. По умолчанию при новой установке Unity будет установлена общественная версия Visual Studio, а также расширение Game Development with Unity, интегрирующее Visual Studio с Unity. Если вы не хотите устанавливать Visual Studio, то вы можете получить копию здесь. Подробную информацию о настройке Visual Studio для работы с Unity можно найти здесь.
После установки Visual Studio в редакторе Unity откройте Unity > Preferences > External Tools и выберите Visual Studio в качестве внешнего редактора сценариев.
Чтобы обеспечить отладку кода вашего проекта в режиме реального времени во время его работы в редакторе, отладчик Visual Studio должен прикрепиться к редактору. Это позволяет отладчику получить доступ к состоянию времени выполнения игры и взаимодействовать с ним. Давайте пройдемся по шагам, чтобы прикрепить его:
Откройте проект Unity, который вы хотите отладить.
В Unity перейдите в меню Edit > Preferences (Windows) или Unity > Preferences (macOS) и убедитесь, что Visual Studio установлен в качестве предпочтительного редактора внешних сценариев. Если нет, выберите его из выпадающего меню.
Откройте нужный скрипт в Visual Studio, дважды щелкнув на файле скрипта в представлении проекта или через пункт меню Assets > Open C# Project.
В Visual Studio перейдите в Debug > Attach Unity Debugger или нажмите кнопку Attach to Unity на панели инструментов. Откроется окно со списком доступных экземпляров Unity.
Выберите экземпляр Unity, на котором запущен ваш проект (обычно он отображается как "Unity Editor (имя вашего проекта)"), и нажмите кнопку Attach.
Visual Studio теперь подключена к Unity, и вы можете начать устанавливать точки останова и отлаживать свой код. Когда игра запущена в редакторе, отладчик Visual Studio приостанавливает выполнение в точках останова, позволяя вам исследовать состояние игры и отлаживать ваш код, как показано в следующем разделе.
Если это ваш первый сеанс отладки, то вы увидите окно, в котором вам будет предложено включить отладку для текущего сеанса или для всех сеансов. Рекомендуется выбрать первый вариант, "Включить отладку для этой сессии".
Точка останова - это маркер на определенной строке кода. Когда отладчик встречает точку останова, он останавливает выполнение программы, позволяя вам просмотреть текущее состояние переменных, объектов и стека вызовов. Затем вы можете пройтись по коду строка за строкой, наблюдая, как меняется состояние по мере выполнения программы.
Чтобы установить точку останова в Visual Studio, откройте скрипт и щелкните в левом поле редактора кода рядом со строкой кода, в которой вы хотите приостановить выполнение. Или установите курсор на строку и нажмите F9. Появится красная точка, указывающая на то, что была установлена точка останова, как показано на верхнем изображении выше.
Теперь перейдите в редактор Unity и сыграйте в игру. Когда выполнение программы достигнет строки с точкой останова, Visual Studio станет активным приложением переднего плана, а выполнение программы будет приостановлено на линии точки останова. На этом этапе вы можете использовать инструменты Visual Studio для проверки переменных.
Самый простой вариант - навести курсор на объект, свойство или простую переменную. Visual Studio добавит панель наложения (нижнее изображение на коллаже выше), позволяющую просматривать перегрузки функции, свойства объекта, а также значения свойства или переменной.
Если на накладке есть стрелка, направленная вправо, то при нажатии на нее панель развернется, предлагая больше информации о внутренних значениях свойств объекта.
Эта возможность исследовать значения в запущенной программе невероятно полезна.
Когда Visual Studio подключена к Unity, справа от Debug > Attach to Unity добавляется новая панель инструментов. Четыре кнопки на этой панели инструментов выполняют следующие действия (слева направо):
- Продолжить/Пауза выполнения: Если программа воспроизводится в данный момент, появится значок паузы, на который можно нажать, чтобы приостановить выполнение. Когда программа приостановлена, появляется значок со стрелкой вправо, указывающий на то, что нажатие возобновит выполнение программы.
- Шаг за шагом: Нажатие этой кнопки приводит к выполнению выделенной строки кода и повторной паузе на следующей строке.
- Шаг внутрь: Если активная строка кода включает функцию, исходный код которой является частью проекта, то эта кнопка позволяет разработчику войти в функцию и просмотреть ее код.
- Выходите: Это перемещает выполнение программы за пределы текущей функции.
Условная точка останова - это расширенная форма точки останова, которая приостанавливает выполнение только при выполнении заданного условия. Это может быть полезно, когда вы хотите исследовать конкретный сценарий или когда проблема возникает только при определенных условиях.
Если щелкнуть правой кнопкой мыши на точке останова в боковой панели или в окне точек останова нижней панели, появится контекстное меню. Выберите Редактировать точку останова. Появится диалоговое окно, показанное на рисунке выше.
Больше инструментов отладки
В Visual Studio окно отладчика содержит несколько окон, которые помогают просмотреть состояние приложения, когда оно приостановлено в точке останова. Три важных окна для изучения состояния вашей программы - это Locals, Watch и Call Stack. В следующих разделах мы рассмотрим каждый из них.
В окне Locals отображаются локальные переменные и их значения в текущей области видимости выполняемого кода. Сюда входят переменные, объявленные в текущем методе или блоке, а также аргументы метода. Окно Locals позволяет быстро просмотреть значения переменных в текущей точке останова, что может быть полезно для выявления неправильных или неожиданных значений, которые могут вызывать проблемы в вашем коде. Помните, что если строка начинается со стрелки, направленной вправо, то ее можно развернуть, а стрелка, направленная вниз, уменьшит развернутое окно.
Окно Watch позволяет отслеживать определенные переменные или выражения, которые необходимо контролировать в процессе отладки. В отличие от окна Locals, которое показывает переменные в текущей области видимости, окно Watch позволяет вручную добавлять переменные или выражения, независимо от их области видимости. Это может быть полезно для отслеживания состояния определенных переменных в ходе выполнения программы или для оценки выражений на основе текущего состояния приложения.
Введите имя переменной или объекта в области видимости, и появится панель, позволяющая осмотреть его. Чтобы добавить часы в Visual Studio, щелкните правой кнопкой мыши на переменной или выражении в коде и выберите Add Watch из контекстного меню или введите выражение непосредственно в окно Watch.
В окне Call Stack отображается последовательность вызовов методов, которые привели к текущей точке останова, что позволяет проследить путь выполнения программы. Каждая запись в стеке вызовов представляет собой вызов метода, причем самый последний вызов находится в верхней части списка. Изучив стек вызовов, вы сможете определить, как ваш код оказался в текущей точке выполнения, что поможет вам выявить первопричину проблем или неожиданного поведения.
Помимо отображения последовательности вызовов методов, окно Call Stack позволяет перемещаться по различным уровням стека. Дважды щелкнув по записи в списке, вы можете перейти к соответствующей строке кода в исходном файле и просмотреть локальные переменные и параметры для этого метода. Это позволяет понять, в каком контексте был вызван тот или иной метод, и проанализировать поток данных, проходящий через ваше приложение.
Отладчик Visual Studio полезен не только для игры, запущенной в редакторе Unity, но и для сборок. Вам нужно убедиться, что сборка включает данные, используемые отладчиком. Это можно сделать через File > Build Settings и в открывшемся окне выбрать Development Build и Script Debugging (см. рисунок выше).
Выберите Debug > Attach Unity Debugger из главного меню для Windows или Debug > Attach to Process из верхнего меню для MacOS.
Выберите экземпляр под названием Unity Player. Теперь все точки останова, локали и часы доступны в сборке разработки.
Планируете ли вы использовать другой редактор кода? Читайте нашу статью о советах по работе с Microsoft Visual Studio Code.
Unity предлагает ряд руководств, помогающих профессиональным разработчикам оптимизировать игровой код. Создайте руководство по стилю C#: Пишите более чистый код, который масштабируется собраны советы экспертов отрасли о том, как создать руководство по стилю кода, чтобы помочь вашей команде разработать чистую, читаемую и масштабируемую кодовую базу.
Еще одним популярным руководством среди наших пользователей является 70+ советов по повышению производительности с помощью Unity. В нем собраны советы по экономии времени, которые помогут вам улучшить повседневный рабочий процесс с Unity 2020 LTS, включая советы, которые могли пропустить даже опытные разработчики.
Найдите все передовые электронные книги и статьи Unity в хабе "Лучшие практики Unity".