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

Показатели загрузки активов

Используйте класс AsyncReadManagerMetrics для мониторинга загрузки ресурсов во время выполнения и скорости чтения файлов. Этот класс записывает данные обо всех операциях чтения файлов, управляемых AsyncReadManager.

Подсистема Unity использует AsyncReadManager для чтения большинства файлов во время выполнения. Файлы, загруженные с помощью AsyncReadManager, включают AssetBundles, Addressables и Resources. Кроме того, вы можете загружать файлы из скриптовфрагмента кода, позволяющего создавать собственные компоненты, запускать игровые события, изменять Свойства компонента с течением времени и реагировать на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь
с использованием AsyncReadManager.Read.

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

Класс AsyncReadManagerMetrics доступен только в классе сборки для разработкиСборка для разработки включает символы отладки и включает профилировщик. Подробнее
См. в Словарь
. Вы должны защищать любые вызовы API-интерфейсов AsyncReadManagerMetrics внутри директивы препроцессора #if с помощью символа ENABLE_PROFILER. Символ ENABLE_PROFILER определен только для разрабатываемых сборок, поэтому он позволяет компилировать ваши скрипты в сборках, где метрики недоступны. Для обратной совместимости вы также можете использовать символ UNITY_2020_2_OR_NEWER, чтобы удалить код метрик из более ранних версий Unity. Например:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER AsyncReadManagerMetrics.StartCollectingMetrics(); #endif

Включение сбора метрик

Перед записью каких-либо данных необходимо включить сбор метрик. Включите сбор метрик одним из следующих способов:

Примечание. вы можете передать -enable-file-read-metrics при запуске приложения Unity Editor, чтобы включить сбор при входе в режим воспроизведения. Однако Редактор загружает некоторые категории активов, например текстуры, сам и не перезагружает их при входе в Playmode. Чтобы получить полное представление о показателях файлового ввода-вывода, необходимо собрать данные из разрабатываемой сборки приложения.

Получение данных о показателях

Получите метрики, собранные классом AsyncReadManagerMetrics, вызвав GetMetrics. Передайте этой функции AsyncReadManagerMetrics.Flags, чтобы указать, очищать ли метрики после извлечения. Очистите метрики, чтобы удалить все выполненные операции чтения (включая отмененные и неудачные) из сохраненных метрик. Очистка не влияет на какие-либо операции в очереди или в процессе; вы можете получить доступ к показателям незавершенных операций, снова вызвав GetMetrics после их завершения. Регулярно очищая метрики, вы можете избежать повторного считывания одних и тех же данных, а также снизить нагрузку на систему.

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER AsyncReadManagerRequestMetric[] metrics = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead); #endif

По возможности данные метрики включают контекстную информацию об операции чтения. Эта информация включает в себя AssetLoadingSubsystem, которая запросила чтение, файл AssetName и AssetTypeID. Если AsyncReadManager не имеет доступа к этой информации, значение для этих полей метрик равно Other, пусто, и ноль соответственно.

Примечание. Идентификаторы типов объектов, о которых известно, что они поддерживаются в настоящее время, показаны в таблице ниже. Другие идентификаторы TypeID, которые могут появиться, см. в Справочнике по идентификаторам классов YAML.

Идентификатор типа Имя типа
28 Texture2D
117 Texture3D
89 CubeMapКоллекция из шести квадратных текстур, которые могут представлять отражения в окружающей среде или скайбокс, нарисованный позади вашей геометрии. Шесть квадратов образуют грани воображаемого куба, окружающего объект; каждая грань представляет вид по направлениям мировых осей (вверх, вниз, влево, вправо, вперед и назад). More info
See in Словарь
43 Mesh

Получение сводных данных

Сводку показателей AsyncReadManager можно получить следующими способами:

Например:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER AsyncReadManagerSummaryMetrics summaryOfMetrics = AsyncReadManagerMetrics.GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead); #endif

Или:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER AsyncReadManagerRequestMetric[] metrics = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead); AsyncReadManagerSummaryMetrics summaryOfMetrics = AsyncReadManagerMetrics.GetSummaryOfMetrics(metrics); #endif

Сводные данные для показателей включают в себя такие статистические данные, как:

  • Средняя пропускная способность
  • Средний размер чтения
  • Тип объекта с наибольшим временем загрузки
  • Количество прочтений
  • Количество запросов
  • Всего прочитано байтов

(Полный список см. в AsyncReadManagerSummaryMetrics.)

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

Примечание. Расчет сводной статистики требует ресурсов обработки. Чтобы эти расчеты не повлияли на записываемые вами измерения, вы можете сначала собрать метрики и получить сводку только после завершения анализируемых операций.

Сводные фильтры

Используйте AsyncReadManagerMetricsFilters с любым из этих методов, чтобы указать, какие типы данных следует суммировать. Любые показатели, не соответствующие фильтру, исключаются из сводки. Вы можете фильтровать по следующим категориям:

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

Вы также можете указать несколько значений для категории. В этом случае операция чтения может соответствовать любому значению, указанному вами для категории, чтобы ее показатели включались в сводку. Например, вы можете указать как MeshОсновной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь
и ТекстураИзображение, используемое при рендеринге GameObject, Sprite или элемента пользовательского интерфейса . Текстуры часто применяются к поверхности сетки, чтобы придать ей визуальную детализацию. Подробнее
См. Словарь
для Подсистема, чтобы обобщить операции для ресурсов Mesh и Texture.

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