Unity 6.3
0 онлайн 106 гостей 3 в системе
Вход
Ассеты и медиа Шаг 107 из 148

Сбор показателей загрузки ассетов

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

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

Вы можете использовать AsyncReadManagerMetrics для выполнения следующих действий:

  • Запуск и остановка сбора показателей.
  • Получение и анализ записанных данных показателей.
  • Фильтруйте и обобщайте данные, чтобы облегчить анализ.

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

Требования к разработке

AsyncReadManagerMetrics класс доступен только в сборках для разработки. Для совместимости оборачивайте вызовы AsyncReadManagerMetrics APIs в #if директива препроцессора с использованием ENABLE_PROFILER символ. Для более старых версий Unity, используйте UNITY_2020_2_OR_NEWER символ, чтобы удалить метрический код. Например:

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

Включить сбор показателей

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

  • Вызывайте AsyncReadManagerMetrics.StartCollectingMetrics в вашем скрипте.
  • Передайте аргумент командной строки -enable-file-read-metrics при запуске приложения.

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

Получение метрических данных

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

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

Данные показателей включают следующие контекстные данные:

  • AssetLoadingSubsystem, инициировавший чтение. Если недоступно, по умолчанию Other.
  • AssetName. Если недоступно, по умолчанию пусто.
  • AssetTypeID. Если недоступно, по умолчанию нулевой.

Ниже приведен список поддерживаемых ассетов TypeIDs:

TypeID Тип названия
28 Texture2D
117 Texture3D
89 CubeMap
43 Сетка

Для других TypeIDs, которые могут появиться, см. Справочник по идентификаторам классов YAML.

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

Получить сводку показателей 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, так и для Subsystem фильтра, чтобы свести воедино только операции в указанных состояниях обработки, инициированные указанными подсистемами.

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

Дополнительные ресурсы