Debugging в Unity3D через MonoDev
|
|
KamiRonin | Дата: Среда, 15 Мая 2013, 00:22 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Доброго времени суток всем!
Пришел в геймдев из системного программирования - там мы привыкли к отладке.. А тут в Юньке приходилось юзать 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 |
|
| |
robertono | Дата: Среда, 06 Ноября 2013, 21:09 | Сообщение # 2 |
Чокнутый Кот
Сейчас нет на сайте
| Пользуюсь! Иногда нужно. Добавлено (06.11.2013, 21:09) --------------------------------------------- Спасибо)
Сообщение отредактировал robertono - Среда, 06 Ноября 2013, 21:08 |
|
| |
shubniggurath | Дата: Среда, 06 Ноября 2013, 21:42 | Сообщение # 3 |
www.playnoread.com
Сейчас нет на сайте
| KamiRonin, может еще опишешь как Visual Studio к юньке подрубать?
Учу 3д!
|
|
| |
robertono | Дата: Среда, 06 Ноября 2013, 22:03 | Сообщение # 4 |
Чокнутый Кот
Сейчас нет на сайте
| shubniggurath, дебаг или просто использование вижуал студио вместо моно девелоп?
|
|
| |
true_abrakadabra | Дата: Среда, 06 Ноября 2013, 22:04 | Сообщение # 5 |
Unity3d - ван лав
Сейчас нет на сайте
| shubniggurath, Заплати и наслаждайся
Ниндзя
|
|
| |
KamiRonin | Дата: Четверг, 07 Ноября 2013, 08:52 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Цитата shubniggurath ( ) может еще опишешь как Visual Studio к юньке подрубать? UnityVS который упоминает true_abrakadabra, одно из самых лучших решений, он нужен как раз, чтобы решить проблему дебагинга через VS.
но на сайте Unity, в справке и других ресурсах есть простые инструкции о подключении VS для скриптинга. вот тут почитай.
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
Сообщение отредактировал KamiRonin - Четверг, 07 Ноября 2013, 09:00 |
|
| |