MonoDevelop - это интегрированная среда разработки (IDE), поставляемая вместе с Unity. IDE сочетает в себе функции текстового редактора с дополнительными возможностями для отладки и выполнения других задач по управлению проектами. Здесь не будет рассматриваться текстовый редактор, так как он достаточно интуитивен, но интеграция редактора и отладчика с Unity описана ниже.
MonoDevelop устанавливается по умолчанию вместе с Unity. Во время установки Unity на Windows, вы можете отменить установку MonoDevelop. Вы должны убедиться, что MonoDevelop установлен в качестве внешнего редактора скриптов в Preferences (меню: Unity > Preferences, а затем выберите панель External Tools). Если эта опция включена, Unity запустит MonoDevelop и будет использовать его в качестве редактора по умолчанию для всех скриптовых файлов.
Чтобы включить отладку исходного кода (см. ниже для подробностей) в MonoDevelop, вам сперва следует проверить, что в Preferences, на панели External Tools включена опция Editor Attaching. Затем, вам следует синхронизировать ваш Unity проект с проектом MonoDevelop (меню: Assets > Sync MonoDevelop Project). Кроме того, убедитесь, что в BuildSettings целевой платформы (меню: File > Build Settings) включены опции Development Build и Script Debugging. Если вы собираете под WebPlayer, тогда вам следует дополнительно убедиться, что в контексте вашего проигрывателя выбран канал версий для разработчиков (правый клик в Windows или cmd-клик в Mac OSX).
Just before starting a debugging session, select the target you wish to debug from the target list next to the play button (Unity Editor, OSX Player, etc.). You can also select “Attach To Process”, this will show the full list of debuggable Unity processes.
With these steps completed, you are ready to being debugging your Unity scripts by clicking the play button.
Текущие открытые исходные файлы отображаются в MonoDevelop в виде вкладок и могут быть отредактированы как в стандартном текстовом редакторе. Также есть серая шкала точек останова (breakpoint bar) слева от панели редактора. Щелчок на этой шкале добавит так называемый маркер точки останова (breakpoint) напротив текущей строчки кода.
Добавление breakpoint’а на линию сообщает Unity, что по достижению этой линии во время Play Mode, следует приостановить выполнение скрипта. Когда скрипт так “замораживается”, вы можете использовать отладчик для определения того, что именно делает скрипт.
При приостановке выполнения на точке останова, во вкладках в нижней части окна MonoDevelop показывается информация о текущем состоянии выполнения. Возможно, наиболее важной из вкладок является Locals.
В этой вкладке показаны значения локальных переменных в текущей функции (псевдо-локальная переменная с именем this автоматически доступна в каждой функции, хоть она и не объявлена явно; это ссылка на текущий экземпляр скрипта, так что через “this” можно получить доступ ко всем переменным, объявленным в скрипте). Вы можете использовать точки прерывания вместе с вкладкой Locals для получения эффекта, аналогичного добавлению выражений print
в ваш код - вы можете просматривать значения переменных в любой удобный вам момент времени. Однако во вкладке Locals вы также можете редактировать значения переменных. Это может оказаться полезным в случае, если вы нашли неверно установленную переменную и хотите проверить, пропадёт ли проблема при установке правильного значения.
Другая полезная функция MonoDevelop - пошаговое выполнение. Когда выполнение приостановится на точке останова, станет доступна шкала отладочных инструментов в верхней части окна MonoDevelop:-
Первые четыре кнопки известны как Continue (продолжить), Step Over (шаг через), Step In (шаг внутрь) и Step Out (шаг наружу) и могут срабатывать по командам из меню Run (самая правая кнопка, Detach может быть использована для окончания отладочной сессии). Continue продолжает выполнение до очередной точки останова. И Step Over и Step In выполняют одну строку кода в один момент времени. Различия между ними в том, что Step Over полностью выполняет любые функции за одну линию, а Step In позволяет “шагнуть” внутрь функции. Так зачастую можно случайно использовать Step In для корректно работающих функций, существует Step Out, который продолжит выполнение до конца текущей функции и остановится снова в коде, который её вызвал.
Детальное описание техник отладки исходного кода не подходит этому разделу, но существуют различные книги и web ресурсы, в которых можно найти все подробности по этой теме. Кроме того, проведение небольших экспериментов поможет почувствовать мощь этих инструментов и понять как их использовать для отслеживания основных типов ошибок.