Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Чтобы получить доступ к профилировщику Unity, выберите Окно > Анализ > Профилировщик или используйте сочетание клавиш Ctrl+7 (Command+7 на macOS).

Окно Profiler, помогающее оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
See in Словарь
записывает несколько областей производительности вашего приложения и отображает эту информацию для ты. Вы можете использовать эту информацию для принятия обоснованных решений о том, что вам может понадобиться оптимизировать в вашем приложении, и чтобы убедиться, что ваши оптимизации приносят ожидаемые результаты.

По умолчанию Profiler записывает и сохраняет последние 300 кадров вашей игры и показывает подробную информацию о каждом кадре. Вы можете увеличить количество записываемых кадров в окне настроек (меню: Файл > Настройки) до 2000 кадров. Примечание. Если вы увеличите этот параметр до большого количества кадров, накладные расходы профилировщика и использование памяти могут увеличить производительность.

Вы можете проверять код скрипта и то, как ваше приложение использует определенные активы и ресурсы, которые могут замедлять его работу. Вы также можете сравнить, как ваше приложение работает на разных устройствах. Profiler имеет несколько различных модулей Profiler, которые вы можете добавить в сеанс профилирования, чтобы получить больше информации о таких областях, как рендеринг, память и звук.

Эта страница охватывает следующие темы:

Макет окна профилировщика

Окно Profiler выглядит следующим образом:

Окно Profiler с выбранным модулем CPU Usage Profiler
Окно Profiler с выбранным модулем CPU Usage Profiler
  • A: модули профилировщика. Это список всех модулей, которые вы можете профилировать в своем приложении. Используйте раскрывающееся меню в верхней части этой области, чтобы добавлять и удалять модули из окна.
  • B: элементы управления профилировщиком. Используйте эти элементы управления, чтобы задать устройство для профилирования и тип профилирования, которое должна выполнять Unity, перемещаться между кадрами и начинать запись данных.
  • C: Диаграммы кадров. Эта область содержит диаграммы каждого модуля профилей Profiler. Эта область пуста, когда вы открываете Profiler в первый раз, и заполняется информацией, когда вы начинаете профилировать свое приложение.
  • D: Панель сведений о модуле. Информация в этой области окна меняется в зависимости от выбранного вами модуля. Например, когда вы выбираете модуль «Профилировщик использования ЦП», он содержит подробную временную шкалу и возможность переключения в представление «Иерархия». При выборе модуля Rendering Profiler в этой области отображается список отладочной информации. Эта область пуста, когда вы открываете Profiler в первый раз, и заполняется информацией, когда вы начинаете профилировать свое приложение.

Настройки профайлера

Окно «Настройки» содержит следующие дополнительные настройки окна Profiler:

Настройки Описание
Frame count Установите максимальное количество кадров для захвата профилировщиком. Вы можете установить это число от 300 до 2000.
Show stats for ‘current frame’ По умолчанию, когда вы нажимаете кнопку Текущий кадр и входите в режим текущего кадра, в строке индикатора кадра нет примечаний со статистикой для текущего кадра. Это связано с тем, что аннотации статистики могут затруднить просмотр данных в режиме реального времени. Чтобы отображать аннотации, включите этот параметр.
Default recording state Выберите, в каком состоянии записи должен открываться Профилировщик. Выберите из Включено, Отключено или Запомнить. Если выбрано значение Enabled, кнопка Запись остается активной между сеансами, а значение Disbled отключает ее, независимо от того, включили вы ее или нет во время сеанса профилирования. Состояние Запомнить запоминает, активировали или отключили кнопку Запись во время сеанса, и сохраняет ее в последнем состоянии при следующем открытии окна Profiler.
Default editor target mode Выберите, какой режим должен использоваться по умолчанию в раскрывающемся списке Прикрепить к проигрывателю. Выберите либо Режим воспроизведения, либо Редактор.

Элементы управления профайлером

Элементы управления Profiler находятся на панели инструментовряд кнопок и основных элементов управления в верхней части редактора Unity, который позволяет взаимодействовать с редактором различными способами (например, масштабирование, перевод). Подробнее
См. Словарь
в верхней части окна Profiler. Используйте их, чтобы начать или остановить запись данных профилировщика и перемещаться по профилированным кадрам.

Управление Функция
Attach to Player Выберите цель для профилирования вашего приложения. По умолчанию установлено значение Playmode. Вы также можете выбрать Редактор, чтобы профилировать редактор Unity и отображать ресурсы, которые редактор использует в данный момент.

Unity также автоматически обнаруживает любые устройства, работающие в вашей сети или подключенные через USB, и отображает их в раскрывающемся списке. Нажмите Ввести IP в раскрывающемся списке, чтобы вручную ввести IP-адрес устройства, на котором вы хотите профилировать свое приложение. Дополнительные сведения см. в разделе Профилирование приложения.
Record Включите этот параметр, чтобы записывать информацию профилирования для активных модулей при запуске приложения. Если у вас не включена эта кнопка, Profiler не собирает никаких данных при запуске вашего приложения..
Back arrow Перейти на один кадр назад.
Forward arrow Перейти на один кадр вперед.
Current Frame Когда вы нажимаете кнопку Текущий кадр, линия индикатора кадра переходит к последнему записанному кадру, и Профилировщик переходит в режим текущего кадра. Пока Profiler собирает данные в этом режиме, он остается в текущем кадре и отображает собранные данные в режиме реального времени. Нажмите кнопку еще раз, чтобы выйти из режима текущего кадра..
Frame number Указывает номер кадра, который вы в данный момент просматриваете в Profiler. Число слева — это текущий выбранный кадр, а число справа — общее количество кадров, собранных профилировщиком за весь сеанс профилирования.
Clear Сотрите все данные из окна Profiler.
Clear on Play Включите этот параметр, чтобы стереть все данные из окна Profiler в следующий раз, когда вы нажмете Play в окне Player или при подключении к новому целевому устройству.
Deep Profile Включите этот параметр, чтобы профилировать все методы C#. Когда вы включаете этот параметр, Unity добавляет инструментарий ко всем монофоническим вызовам, что позволяет более подробно исследовать ваши скриптыЧасть кода, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на ввод данных пользователем любым удобным для вас способом. Подробнее
См. в Словарь
. См. раздел Глубокое профилирование.
Call StacksA list of methods that were called at run time, organized as a last-in-first-out stack.
See in Словарь
Щелкните этот переключатель, чтобы записывать стеки вызовов для выделения памяти сценариями. Кадры, которые профилировщик записывает, когда вы включаете этот параметр, содержат информацию о выбранных образцах в полном стеке вызовов, что приводит к распределению управляемых сценариев, даже если Deep Profile не активен. По умолчанию Profiler записывает полную информацию о стеке вызовов для образцов GC.Alloc, когда вы включаете этот параметр, но вы можете изменить его на другой образец в раскрывающемся меню (UnsafeUtility.Malloc, JobHandle.Complete или собственные распределения). Дополнительные сведения см. в разделе Стеки вызовов выделения на странице модуля "Профилировщик использования ЦП".
Load Загрузите сохраненные данные Profiler в окно Profiler. Вы также можете загрузить двоичные данные профиля, записанные проигрывателем в файл, с помощью API Profiler.logFile.

Удерживая нажатой кнопку Shift, нажмите кнопку Загрузить, чтобы добавить содержимое файла к кадрам текущего профиля..
Save Сохраните данные Profiler в файле .data в папке вашего проекта.
Context menu
Color Blind Mode Включите этот параметр, чтобы профилировщик использовал более контрастные цвета на своих графиках. Это улучшает видимость для пользователей с красно-зеленой цветовой слепотой (например, дейтеранопией, протанопией или тританопией).
Show stats for “current” frame По умолчанию, когда вы нажимаете кнопку Текущий кадр и входите в режим текущего кадра, в строке индикатора кадра нет примечаний со статистикой для текущего кадра. Это связано с тем, что аннотации статистики могут затруднить просмотр данных в режиме реального времени. Чтобы отображать аннотации, включите этот параметр.
Preferences Откройте меню Настройки, чтобы настроить свойства Profiler.

Чтобы снизить нагрузку, Unity перерисовывает только каждый пятый кадр пользовательского интерфейса редактора. Это приводит к слегка заикающемуся обновлению.

Глубокое профилирование

Обычно профилировщик профилирует только те тайминги кода, которые явно заключены в ProfilerMarkers. Это включает в себя первую глубину стека вызовов вызовов из собственного кода движка в ваш код сценария, например MonoBehaviour Start , Обновить или аналогичные методы.

Без добавления более явного инструментария ProfilerMarker к вашему собственному коду единственными образцами, которые вы можете видеть в качестве дочерних образцов вашего кода сценария, являются те, которые вызывают обратный вызов API Unity, если этот API был инструментирован. Большинство вызовов API, которые несут накладные расходы на производительность, инструментированы. Например, доступ к основному компоненту Камера, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
Посмотреть в Словарь
через Camera.main API зарегистрирован как образец «FindMainCamera".

Когда вы включаете параметр Глубокий профиль, Profiler профилирует каждую часть вашего кода скрипта и записывает все вызовы функций, включая как минимум первую глубину стека вызовов в любом API Unity. Это полезная информация, которая поможет вам понять, как ваш код влияет на производительность вашего приложения, но это сопряжено с большими накладными расходами.

Когда вы выполняете глубокое профилирование своего приложения, Unity внедряет инструментарий профилировщика во все ваши методы скрипта, чтобы записывать все вызовы функций. Это полезно, чтобы понять, где код вашего приложения тратит больше всего времени.

Глубокое профилирование требует больших ресурсов и большого объема памяти. В результате ваше приложение работает значительно медленнее во время профилирования. Глубокое профилирование лучше подходит для небольших игр с простыми сценариями. Если вы используете сложный код скрипта, ваше приложение может вообще не использовать Deep Profiling, а для многих более крупных приложений Deep Profiling может привести к нехватке памяти Unity.

Если вы сталкиваетесь с проблемами, когда профилировщику слишком много образцов для хранения в кольцевом буфере, который он использует для их потоковой передачи в профилировщик, тогда Unity отображает сообщение об ошибке. Чтобы увеличить размер кольцевого буфера, вы можете настроить свойство Profiler.maxUsedMemory для профилируемого проигрывателя.

Если из-за глубокого профилирования частота кадров вашего приложения падает настолько, что его невозможно запустить, вы можете вручную профилировать блоки кода сценария, что требует меньших накладных расходов, чем глубокое профилирование. Используйте ProfilerMarkers, чтобы вручную добавить инструменты, необходимые для разметки блоков сценария. Они отображаются в модуле Профилировщика использования ЦП.

Если вы хотите узнать, какие стеки вызовов ведут к образцу GC.Alloc без глубокого профилирования, вы можете включить сбор стеков вызовов распределения. Включите параметр Стеки вызовов в элементах управления Profiler, а затем вы можете выбрать образцы GC.Alloc в представлении временной шкалы или использовать панель «Показать связанные объекты» в представлении «Иерархия». чтобы найти стеки вызовов для этих образцов. Дополнительную информацию см. в документации по стекам вызовов распределения на странице модуля профилирования ЦП.

Модули профилировщика

Верхняя часть окна Profiler разделена на модули Profiler, которые профилируют определенные области вашей игры. Когда вы профилируете свое приложение, Unity отображает данные, относящиеся к каждому модулю, в соответствующих диаграммах.

Модуль Использование ЦП предоставляет лучший обзор того, сколько времени ваше приложение тратит на каждый кадр. Другие модули собирают более конкретные данные и могут помочь вам изучить более конкретные области или отслеживать жизненно важные функции вашего приложения, такие как потребление памяти, рендеринг или статистика звука.

Каждый модуль имеет собственную диаграмму. При выборе модуля в нижней части окна появляется панель сведений о модуле, которую можно использовать для просмотра подробных данных, собираемых модулем.

Модуль профайлера Функция
CPU Usage Отображает обзор того, где ваше приложение тратит больше всего времени, в таких областях, как физика, сценарии, анимация и сборка мусора. Этот модуль содержит общую информацию о вашем приложении, и вы можете использовать его, чтобы решить, какие дополнительные модули использовать для исследования более конкретных проблем в вашем приложении. Этот модуль всегда активен, даже если вы его закроете. См. модуль CPU Usage Profiler.
GPU Usage Отображает информацию, связанную с обработкой графики. По умолчанию этот модуль не активен, так как имеет большие накладные расходы. См. модуль профилирования использования графического процессора.
RenderingПроцесс отрисовки графики на экран (или текстуры рендеринга). По умолчанию основная камера в Unity отрисовывает свой вид на экран.. More info
See in Словарь
Отображает информацию о том, как Unity отображает графику в вашем приложении, включая информацию о статической и динамической пакетной обработкеавтоматическом процессе Unity, который пытается отобразить несколько сетки, как если бы они были одной сеткой для оптимизации графической производительности. Этот метод преобразует все вершины GameObject на ЦП и группирует множество похожих вершин вместе. Подробнее
См. в Словарь
вызовы SetPass и Draw, треугольники и вершины. См. раздел Модуль профилировщика рендеринга.
Memory Отображает информацию о том, как Unity выделяет память в вашем приложении. Это особенно полезно для наблюдения за тем, как выделение памяти сценариями (GC.Alloc) приводит к сборке мусора или как со временем изменяется использование памяти вашего приложения. См. модуль профилировщика памяти.
Audio Отображает информацию, связанную со звуком в вашем приложении, например, когда и сколько аудиоисточниковкомпонент, который воспроизводит аудиоклип в сцену аудиослушателю или через аудиомикшер. Подробнее
Узнайте в игре Словарь
, сколько ресурсов ЦП требуется аудиосистеме и как много памяти, которую Unity выделяет ему. См. модуль Audio Profiler.
Video Отображает информацию, связанную с видео в вашем приложении. См. модуль Video Profiler.
Physics Отображает информацию о физике в вашем приложении, которую физический движоксистема имитирует аспекты физических систем, чтобы объекты могли правильно ускоряться и подвергаться воздействию столкновений, гравитации и других сил. Подробнее
См. в Словарь
обработано. См. модуль физического профилировщика.
Physics (2D) Подобно модулю Physics Profiler, этот модуль отображает информацию о том, где физический движок обработал 2D-физику в вашем приложении. См. модуль 2D Physics Profiler..
Network Messages
(deprecated)
Отображает информацию о пакетах и сообщениях более низкого уровня, отправленных или полученных с помощью API высокого уровня многопользовательской игры.
Примечание. API высокого уровня многопользовательской игры устарел..
Network Operations
(deprecated)
Отображает подробную информацию о типах или операциях в сообщениях, отправленных и полученных многопользовательским API высокого уровня, например, сколько SyncVars или команд было передано.
Примечание. Многопользовательский API высокого уровня устарел.
UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словарь
Отображает информацию о том, как Unity обрабатывает пакетную обработку пользовательского интерфейса для вашего приложения, в том числе почему и как Unity группирует элементы. См. раздел UI и модуль Profiler Details UI.
UI Details Подобно модулю пользовательского интерфейса, диаграмма этого модуля добавляет данные о количестве пакетов и вершин, а также маркеры, которые включают информацию о событиях пользовательского ввода, которые вызывают изменения пользовательского интерфейса. См. модуль профилирования пользовательского интерфейса и сведений о пользовательском интерфейсе.
Глобальное освещениеГруппа методов, которые моделируют как прямое, так и непрямое освещение для получения реалистичных результатов освещения. В Unity есть две системы глобального освещения, сочетающие прямое и непрямое освещение: запеченное глобальное освещение и глобальное освещение в реальном времени.
См. в Словарь
Отображает информацию о том, сколько ресурсов ЦП Unity тратит на подсистему освещения Global Illumination в вашем приложении. См. окно Global Illumination Profiler.
Virtual Texturing Отображает статистику о потоковом виртуальном текстурировании в вашем приложении. См. модуль Virtual Texturing Profiler.

Заголовок модуля Profiler

Некоторые модули Profiler требуют больших затрат на сбор данных, например модуль GPU, UI и Audio Profiler. Чтобы эти модули не влияли на производительность вашего приложения, вы можете деактивировать их, сняв флажок в раскрывающемся списке Модуль профилировщика. Это удалит модуль из окна, остановит профилировщик от сбора данных этого модуля и снизит накладные расходы профилировщика.

Это не относится к модулю использования ЦП, который всегда собирает данные, даже если он неактивен, поскольку на него полагаются другие модули.

Чтобы добавить модуль, откройте раскрывающийся список Модуль профилировщика и выберите профайлер, который хотите активировать. Когда вы выбираете модуль Profiler из раскрывающегося списка, он начинает собирать данные, но не показывает данные за период, в котором он не был активен.

Чтобы избежать накладных расходов на модуль GPU Profiler, он по умолчанию не активен. Модуль GPU Profiler должен быть активен в начале вашего приложения, чтобы подключиться к графическому драйверу. Если вы добавите его позже, он не повлияет на большинство платформ, и Profiler отобразит сообщение «Профилирование графического процессора не поддерживается драйвером видеокарты (или оно было отключено из-за ошибок драйвера)».

Если вы указываете профилировщику собирать и отправлять данные на диск через API Profiler.logFile, а не через окно профилировщика, вы можно отключить модули Profiler с помощью Profiler.SetAreaEnabled().

Некоторые настройки, отлаживающие ваши скрипты через внешнюю IDE, также могут создавать дополнительные затраты. Чтобы избежать этих накладных расходов и получить более точные измерения, отключите параметр Подключение редактора (меню: Настройки > Внешние инструменты). Точно так же при профилировании сборок Players откройте Настройки сборки и отключите Отладку сценариев, чтобы избежать дополнительных затрат.

Диаграммы кадров Profiler

В верхней части окна Profiler отображаются данные о производительности с течением времени для каждого кадра. Когда вы запускаете свое приложение, Profiler записывает данные для каждого кадра. По умолчанию окно Profiler отображает историю последних 300 кадров, которые он профилирует. Вы можете увеличить количество кадров профилей Profiler в окне Настройки, максимум до 2000.

Если щелкнуть область диаграммы кадров Profiler в окне Profiler, появится белая линия, которая выделяет один кадр вашего приложения. Для перемещения между кадрами используйте элементы управления транспортом на панели инструментов окна Profiler.

Unity автоматически управляет вертикальным масштабом диаграмм, и диаграммы пытаются заполнить вертикальное пространство окна. Чтобы увидеть больше деталей на диаграмме, вы можете удалить другие модули Profiler или перетащить разделитель между диаграммами и областью подробной статистики, чтобы увеличить область экрана диаграмм.

Чтобы скрыть или отобразить показатель на диаграмме, щелкните цветной квадрат рядом с его меткой в ​​соответствующем модуле. Это может быть полезно для выявления причин пиков. В диаграммах с накоплением, таких как диаграмма Профилировщика использования ЦП, вы можете изменить порядок меток показателей, чтобы изменить порядок размещения, что помогает сделать более заметные показатели более заметными.

Каждый модуль Profiler собирает различные показатели производительности и отображает их на отдельных диаграммах. Когда вы щелкаете фрейм, Unity отображает дополнительные сведения о фрейме на панели «Сведения о модуле» в нижней половине окна «Профилировщик». Тип детализации в этом окне меняется в зависимости от того, какой модуль профиля вы выбрали. Дополнительные сведения о конкретных сведениях, которые каждый модуль отображает в этой области, см. в отдельной документации для модулей Profiler.

Автономный профайлер

Чтобы использовать автономный профилировщик, выберите Окно > Анализ > Профилировщик (автономный процесс). Когда вы выбираете автономный профилировщик, Unity запускает профилировщик вне процесса редактора Unity, а вместо этого запускает профилировщик в новом, отдельном процессе.

Запуск профилировщика в отдельном специальном процессе обеспечивает более чистые данные профилировщика, когда вы выбираете режим редактирования или воспроизведения. Это также снижает накладные расходы, поскольку Profiler не профилирует себя и не использует процесс совместно с вашим приложением или редактором. Функциональность и элементы управления профилировщика остаются такими же, как если бы вы запускали профилировщик в том же процессе, что и редактор.

Выбор меню для автономного профилировщика
Выбор меню для автономного профилировщика

Когда вы запускаете отдельный процесс для окна Profiler, его запуск занимает больше времени, чем его открытие в том же процессе, что и редактор. Вы не можете пристыковать окна редактора, которые подключены к отдельному процессу, к окнам основного процесса. Кроме того, при перезапуске редактора Unity не открывает повторно окна внепроцессного профилировщика.

Аргументы командной строки

Если вы запускаете встроенный проигрыватель или редактор Unity из командной строки (например, из командной строки в Windows, терминала в macOS, оболочки Linux или adb для Android), вы можете передать аргументы командной строки для настройки некоторых параметров профилировщика. .

Аргумент командной строки Описание
-deepprofiling Включите глубокое профилирование во встроенном проигрывателе.
-profiler-enable Профилируйте запуск Player или Editor. Использование этого аргумента с проигрывателем дает тот же эффект, что и создание проигрывателя с включенным параметром Autoconnect Profiler в настройках сборки.

Когда вы используете этот аргумент с редактором, он начинает собирать и отображать информацию профилировщика в окне профилировщика при запуске редактора.
-profiler-log-file Этот аргумент настраивает Profiler на передачу данных профиля в файл .raw при запуске. Это работает как для игроков, так и для редактора.
-profiler-capture-frame-count Этот аргумент устанавливает, сколько кадров будет захвачено в профиле при потоковой передаче в файл .raw при запуске. Работает только на плеерах.
-profiler-maxusedmemory По умолчанию maxUsedMemory составляет 16 МБ для проигрывателей и 256 МБ для редактора. Вы можете использовать этот аргумент, чтобы задать для параметра maxUsedMemory нестандартный размер при запуске (например, -profiler-maxusedmemory 16777216). Размер задается в байтах.

  • Добавлен внепроцессный профилировщик в 2020.1
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3