Unity 6.3
0 онлайн 78 гостей 3 в системе
Вход
Советы по повышению продуктивности в Unity 6 Глава 7 из 8 Оригинал, стр. 93

IDE и отладка

IDE и отладка

Приостанавливайте выполнение с помощью Debug.Break Если приложение сложно приостановить вручную, а вам нужно проверить определённые значения в Inspector, вызовите Debug.Break, чтобы остановить выполнение в нужном месте кода.

Заменяйте проверку if вызовом Debug.Assert Debug.Assert проверяет условие во время выполнения и выводит сообщение об ошибке в Console, если условие возвращает false. В отличие от Debug.Log, который выполняется всегда, утверждения предназначены для выявления неожиданных состояний и помогают эффективнее проверять предположения, заложенные в коде.

C#
// You can save the if statement in release... if (health > maxhealth) {

    Debug.LogError(“Current health is greater than maxhealth!”, this);
}
//... by

using an assertion Debug.Assert(health < maxhealth, “Current health is greater than maxhealth!”, this);

©2025UnityTechnologies

Используйте Debug.Log с контекстом При вызове Debug.Log вторым параметром можно передать объект - обычно GameObject или компонент. Тогда сообщение журнала связывается с этим объектом в Console: если щёлкнуть по сообщению, Unity выделит соответствующий объект в Hierarchy. Debug.Log(“Enemy spawned”, gameObject);

C#
Выделяйте важные сообщения с помощью Rich Text Console в Unity поддерживает в сообщениях Debug.Log часть тегов Rich Text, например <b>, <i> и <color>. С их помощью можно выделять, окрашивать или подчёркивать отдельные фрагменты вывода журнала, чтобы важные сообщения были заметнее во время разработки. Debug.Log(“<b><color=red>Error:</color></b> Player health is critically low!”);

Удаляйте вызовы Debug.Log из релизных билдов Unity не удаляет API журналирования Debug из билдов, не являющихся Development Build, автоматически. Оберните вызовы Debug.Log в собственные методы и пометьте их атрибутом [Conditional]. Если удалить соответствующий Scripting Define Symbol из Player Settings, все вызовы Debug.Log будут исключены при компиляции. Результат такой же, как при оборачивании вызовов в блоки препроцессора #if… #endif. Пример приведён в руководстве по общей оптимизации.

Диагностируйте физику, визуализируя raycast-запросы Возникли проблемы с физикой? Debug.DrawLine и Debug.DrawRay помогут визуализировать raycast-запросы, рисуя линию между заданными начальной и конечной точками.

C#
// draw a 5-unit white line from the origin for 2.5 seconds Debug.DrawLine(Vector3.zero, new Vector3(5, 0, 0), Color. white, 2.5f);

}

©2025UnityTechnologies

Используйте Debug.isDebugBuild для Development Build С помощью Debug.isDebugBuild можно проверить, запущено ли приложение как Development Build. Это позволяет условно выполнять код, предназначенный только для отладки, - журналирование, диагностику или тестовые утилиты - не затрагивая релизные билды. if (Debug.isDebugBuild) { Debug.Log(“Running in Development Build mode.”); }

Настройте Application.SetStackTraceLogType Используйте Application.SetStackTraceLogType или соответствующие флажки в PlayerSettings, чтобы определить, для каких типов сообщений журнала следует добавлять трассировку стека. Трассировка стека полезна, но работает медленно и создаёт мусор.

Настройки Stack Trace в PlayerSettings окна Editor

C#
Настройте журналирование под свои задачи API Logger позволяет создавать и настраивать собственные экземпляры Logger для более сложного или модульного журналирования. Можно пользоваться встроенным Debug.unityLogger, однако собственный логгер даёт более точный контроль над форматированием, фильтрацией и каналами вывода: var logger = new Logger(Debug.unityLogger.logHandler);
logger.Log(LogType.Log, “Custom log message”);

Ускорьте работу с помощью сочетаний клавиш Visual Studio Code Если вы выбрали Visual Studio Code в качестве IDE, вам могут пригодиться следующие сочетания клавиш:

Windows

Mac

©2025UnityTechnologies

Настройте Console Log Entry для удобства чтения По умолчанию Console Log Entry отображает две строки. Чтобы сделать вывод удобнее, можно выбрать одну или несколько строк в соответствии со своими предпочтениями (см. изображение ниже).

Параметры Console Log Entry позволяют задать количество строк в сообщении журнала.

Дополнительные материалы - Отладка игрового кода с помощью Roslyn Analyzers - Запуск автоматизированных тестов для игр с помощью Unity Test Framework - Ускорение процесса отладки с помощью Microsoft Visual Studio Code - Отладка кода с помощью Microsoft Visual Studio 2022 - Советы по тестированию и обеспечению качества проектов Unity

©2025UnityTechnologies