Пришел в геймдев из системного программирования - там мы привыкли к отладке.. А тут в Юньке приходилось юзать Debug.Log(message) [JavaScriptUnity]. Но вот добрались руки мои до дебагинга в Unity по полной..
Делюсь опытом.
Концепция перехода к отладке в Unity. Отладка начинается с окна MonoDevelop. Его нужно открыть НЕ из Unity (тогда в отладку вы не перейдете!), а отдельно. Закрываем проект Unity, скрипт которого мы хотим отлаживать (! - обязательно), т.е. остаемся в МоноДев. Далее, ставим точку останова в нужном месте в скрипте (F9 находясь в нужной строке). Затем идем в меню -> Run -> RunWith -> Unity Debugger. И... MonoDev сам запускает Unity с нужным проектом; и .. все.. больше ничего не происходит. в Unity жмем Play. Рекомендую в окне Игра - включить режим Maximize on play. Играем пока не сработает точка останова. Если все идет нормально.. то во время выполнения исследуемой функции, в паннели задач замигает кнопка окна MonoDev. Войдя в него мы сможем просмотреть значения переменных (встать на упоминание переменной в скрипте и нажать Shift+F9), добавить её для постоянного отслеживания, пройтись по шагам программы... в общем - debugging him!
Проблемы. Бывает при переходе в МоноДев по точке останова - все виснет! До игры не достучаться, монодев ничего вроде не показывает... Мне помогло нажимание кнопки Step-Out (выйти из трассировки текущей функции), она же Shift+F11. Тоже самое помогло если вы использовали "трассировку с заходом" в функцию на чем нибудь системном (и даже не очень). В этом случае имя функции в МоноДев высвечивается зеленым и "ничего не происходит". Смело жмем степ-оут. Иногда нужно просто подождать. Иногда возникает ситуация когда логика скрипта переходит в интерактивный режим - т.е. нужно вернуться в игру и там что то сделать (МоноДев - сам нас туда не возвращает). Иногда нужно использовать команду в меню Run -> Continue или там же Stop чтобы выйти из штопора.
По завершению отладки - настоятельно рекомендую закрыть Unity и открыть его снова ручками! Иначе бывают совершенно непонятные глюки - то с графикой, то со скриптами, то с физикой в игре. Просто лыжи не едут и все тут! После перезапуска становится все нормально. При закрытии Юньки - МоноДев переходит в обычный режим автоматом.. но как то криво. Его советую тоже перезапустить.
Вот и весь рассказ. Благодаря дебагингу решил проблему за 5 минут.. над которой бился три часа с этими Debug.Log() сообщениями в консоль... Т.ч. делайте выводы! Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Среда, 15 Мая 2013, 00:37