Как часто вы запускали игру и не понимали, что происходит – объект персонажа вдруг улетал с экрана, куда-то пропадали враги, или при стрельбе не видно было выстрелов. Что делать в таких ситуациях, с чего начать поиск ошибки?
Самый простой способ попытаться понять, куда пропали объекты и что вообще происходит в игре в данный момент – это режим паузы. В режиме паузы можно вернуться к игровой сцене, выбрать любой игровой объект и проанализировать его свойства в Инспекторе во время текущего кадра.
Рассмотрим простой пример. В игре реализован враг, который ждет персонажа на каком-то расстоянии от места старта и изначально не виден. Особенность врага в том, что он не стоит на месте, а ходит туда-сюда по таймеру.
Когда персонаж доходит до расположения врага, то его на месте не оказывается. Куда же он пропал?
Воспользуемся режимом паузы, Юнити автоматически перейдет в режим разработки.
В окне иерархии найдем объект врага и убедимся, что он не пропал. Два раза кликнем по нему, и камера автоматически позиционируется на этом игровом объекте.
А теперь уменьшим масштаб, чтобы стал виден не только враг, но и сцена.
Теперь становится понятно, что враг просто стал падать вниз. Давайте проанализируем Инспектор игрового объекта врага.
У врага присутствует компонент Rigidbody2D. Чтобы такой объект взаимодействовал с другими объектами, в частности не падал ниже платформ, ему необходимо добавить компонент коллайдера, который как раз отсутствует. Если исправить эту ошибку, то при приближении к врагу, он никуда не исчезнет.
И познакомимся еще с одним полезным методом – вывод информации на консоль. Панель консоли используется для отображения служебной информации - ошибок, предупреждений и других важных для разработчика сообщений, генерируемых редактором Unity. Эти ошибки и предупреждения помогают найти проблемы в проекте и помогают их исправить. Мы можем использовать консоль также для вывода каких-то отладочных сообщений, чтобы узнать информацию о любом объекте. Подробнее про консоль можно почитать в статье https://dzen.ru/a/Zbd4hqTS2lcYoPXU.
Вывести информацию на консоль можно командой print().
На следующем рисунке показан пример использования команды print() для вывода имени игрового объекта.
Аналогично можно вывести координаты игрового объекта.
При запуске игры во вкладке консоли мы увидим следующие сообщения:
В первой строке мы видим имя объекта – «Cruiser 3», а во второй строке его позицию. Обратите внимания, что позиция выводится сразу в виде трехмерного вектора (тройки чисел), что очень удобно.
В команде print() можно дописывать поясняющую информацию при помощи строк, которые заключаются в двойные кавычки. Например, при такой записи:
print("name = " + transform.name + " x = " + transform.position.x);
На консоли мы увидим:
Тот текст, который был написан в двойных кавычках остается неизменным, а вместо transform.name и transform.position.x подставляются значения соответствующих параметров.