Примечание. Внутренний профилировщик устарел и будет удален в будущей версии Unity. Вместо этого используйте окно Profiler (меню: Window > Analysis > Profiler).
Unity содержит встроенный профилировщикокно, помогающее оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
См. Словарь для iOSмобильная операционная система Apple. Подробнее
См. в Словарь и Android. Каждые 30 кадров встроенный профилировщик выдает консольные сообщения из приложения, работающего на устройстве. Эти сообщения дают представление о том, как работает приложение. В частности, они помогают определить, привязано ли ваше приложение к процессору или графическому процессору. Если ваше приложение привязано к ЦП, вы также можете определить, является ли узким местом код скрипта или сборка мусора. На этой странице подробно описано, как настроить встроенный профилировщик.
Вот пример вывода встроенного профилировщика:
iPhone Unity internal profiler stats
frametime> min: 32.5 max: 34.1 avg: 33.3
cpu-player> min: 2.2 max: 4.4 avg: 3.7
batches> min: 3 max: 3 avg: 3
draw calls> min: 3 max: 3 avg: 3
tris> min: 1704 max: 1704 avg: 1704
verts> min: 5088 max: 5088 avg: 5088
dynamic batching> batched draw calls: 0 batches: 0 tris: 0 verts: 0
static batching> batched draw calls: 0 batches: 0 tris: 0 verts: 0
player-detail> physx: 0.0 animation: 0.0 culling 0.0 skinning: 0.0 batching: 0.0 render: 0.0 fixed-update-count: 0 .. 0
scripting-scripts> update: 0.0 fixedUpdate: 0.0 coroutines: 0.0
scripting-memory> information not available on non-development player configuration
Все время измеряется в миллисекундах на кадр. Вы можете увидеть минимальное, максимальное и среднее время за последние тридцать кадров.
Общая активность процессора
Свойства | Функции |
---|---|
cpu-player | Отображает время, затрачиваемое вашим приложением на выполнение кода внутри движка Unity и выполнение скриптовфрагмента кода, позволяющего создавать собственные компоненты. , запускать игровые события, изменять свойства компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее См. в Словарь по ЦП. |
cpu-ogles-drv (Android only) | Отображает время, затраченное на выполнение кода драйвера OpenGL ES на ЦП. На эту статистику драйвера могут влиять несколько факторов, в том числе количество вызовов отрисовки, количество внутренних изменений состояния рендеринга, настройка конвейера рендеринга и количество обработанных вершин. |
cpu-present (Android only) | Время, затраченное на выполнение команды presentRenderbuffer в OpenGL ES. |
frametime | Представляет общее время кадра приложения. Обратите внимание, что аппаратное обеспечение iOS заблокировано на частоте обновления 60 Гц, поэтому это свойство всегда будет возвращать время, кратное 16,7 мс (1000 мс/60 Гц = 16,7 мс). |
Отображение статистики
Свойства | Функции |
---|---|
tris # | Общее количество треугольников, отправленных на рендеринг. |
verts # | Общее количество вершин, отправленных на рендеринг. Вы должны оставить это число ниже 10000, если ваше приложение использует только статическую геометрию. Если ваше приложение использует много экземпляров геометрии со скинами, это число должно быть намного меньше. |
dynamic/static batching | Количество вызовов отрисовки, треугольников и вершин, которые движок автоматически группирует. Сравнение этих чисел с общими числами вызовов отрисовки и треугольников может дать вам представление о том, насколько хороша ваша сценаСцена содержит окружение и меню. вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее См. в Словаре, подготовленном для пакетной обработки. Делитесь как можно большим количеством материалов между своими объектами, чтобы улучшить пакетную обработку. |
Подробная статистика Unity Player
В разделе player-detail содержится подробная информация о том, что происходит внутри движка:
Свойства | Функции |
---|---|
physx | Время, потраченное на физику. |
animation | Время, потраченное на анимацию костей. |
culling | Время, потраченное на отбраковку объектов за пределами камерыКомпонент, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее См. в Словарь усеченной пирамиды. |
skinningПроцесс привязки суставов костей к вершинам меша или «кожи» персонажа. Выполняется с помощью внешнего инструмента, такого как Blender или Autodesk Maya. Подробнее См. в Словарь |
Время, затраченное на применение анимации к каркасным сеткам. |
batching | Время, потраченное на пакетную обработку геометрии. Пакетная обработка динамической геометрии требует значительно больше ресурсов, чем пакетная обработка статической геометрии. |
render | Время, затраченное на визуализацию видимых объектов. |
fixed-update-count | Минимальное и максимальное количество FixedUpdate, выполненных в течение этого кадра. Слишком большое количество FixedUpdate значительно снизит производительность. |
Подробная статистика скрипта
Раздел scripting-scripts содержит подробную разбивку времени, затрачиваемого на выполнение кода в среде выполнения Mono:
Свойства | Функции |
---|---|
update | Общее время, затраченное на выполнение всех методов Update() в сценариях. |
fixedUpdate | Общее время, затраченное на выполнение всех методов FixedUpdate() в сценариях. |
coroutines | Время, проведенное внутри скриптовых сопрограмм. |
Подробная статистика по памяти, выделенной скриптами
Раздел scripting-memory дает представление о том, как сборщик мусора Mono управляет памятью:
Свойства: | Функции: |
---|---|
allocated heap | Общий объем памяти, доступный для выделения. Сборка мусора срабатывает, если в куче не хватает памяти для данного выделения. Если это не освободит достаточно памяти, выделенная куча увеличится в размере. |
used heap | Часть выделенной кучи, которая в настоящее время используется объектами. Каждый раз, когда вы создаете новый экземпляр класса (не структуру), это число увеличивается до следующей сборки мусора. |
max number of collections | Количество проходов сборки мусора за последние 30 кадров. |
collection total duration | Общее время (в миллисекундах) всех проходов сборки мусора за последние 30 кадров. |
Конфигурация
В iOS внутренний профайлер по умолчанию отключен. Чтобы включить его, откройте проект Xcode, сгенерированный Unity, выберите файл InternalProfiler.h
и измените строку
#define ENABLE_INTERNAL_PROFILER 0
к
#define ENABLE_INTERNAL_PROFILER 1
Кроме того, откройте настройки проигрывателя iOSнастройки, которые позволяют установить различные варианты для конкретного игрока для финальной игры, созданной Unity. Подробнее
См. в Словарь (меню: Edit > Настройки проекта > Настройки проигрывателя, затем выберите iOS). В разделе Отладка и отчеты о сбоях включите параметр Включить внутренний профилировщик (устарело). Убедитесь, что Сборка для разработкиСборка для разработки включает символы отладки и включает профилировщик. Подробнее
See in Словарь включен в Настройки сборки когда вы создаете свое приложение.
Чтобы отобразить консоль вывода (GDB), выберите Вид > Область отладки > Активировать консоль в главном меню Xcode, затем запустите проект. Затем Unity выводит статистику в окно консоли каждые 30 кадров.
Чтобы включить внутренний профилировщик на Android, войдите в Настройки проигрывателя Android (меню: Правка > Настройки проекта > Настройки проигрывателя, затем выберите Android). В разделе Оптимизация включите параметр Включить внутренний профилировщик (устарело). Убедитесь, что Разработка сборки включена в Настройки сборки при создании приложения. Затем статистика будет отображаться в logcat, когда ваше приложение запускается на устройстве. Чтобы просмотреть logcat, убедитесь, что adbAndroid Debug Bridge (ADB). Вы можете использовать ADB для развертывания пакета Android (APK) вручную после сборки. Подробнее
См. в Словарь или установлен Android Debug Bridge, а затем запустите оболочку команда adb logcat
.