Добавление счетчиков профилирования в код
Чтобы добавить счетчик профилирования, создайте скрипты для выполнения следующих действий:
Примеры кода в этих разделах добавляют счетчик Profiler для отслеживания общего количества частиц, которые Unity создал для каждого экземпляра эффекта следа GameObject. В этих примерах GameObject называется “Tank”.
Предварительные условия
В некоторых примерах используется пакет Profiling Core, который необходимо установить перед началом работы. Пакет Profiling Core Unity не обнаруживается в Package Manager UI, поскольку это пакет core. Чтобы установить пакет , добавьте его по имени, который является com.unity.profiling.core.
Создание и определение счетчика
Чтобы создать новый счетчик:
- Написать скрипт, определяющий тип значения нового счетчика.
- Назначьте этому типу имя и единицу измерения.
Важно: При создании счетчика вы должны указать, к какой категории Profiler относится ваш новый счетчик. Для этого используйте существующую категорию Unity из ProfilerCategory класс. В скрипте из следующего примера используется существующий ProfilerCategory.Scripts категория.
Счетчики Profiler и API поддерживают операции push и pull. Вы можете push значение счетчика в Profiler, или Profiler может pull значение в конце кадра.
Если ваши данные изменяются редко, например, один раз в кадре, используйте ProfilerCounter API для передачи данных счетчика в Profiler. Если ваши данные изменяются несколько раз в кадре, используйте ProfilerCounterValue API. Это заставляет Profiler автоматически получать последнее значение в конце кадра.
В следующем примере скрипт определяет ProfilerCounterValue TankTrailParticleCountс именем Tank Trail Particles и единицей ProfilerMarkerDataUnit.Count:
public static class GameStats
{
public static readonly ProfilerCategory TanksCategory = ProfilerCategory.Scripts;
public const string TankTrailParticleCountName = "Tank Trail Particles";
public static readonly ProfilerCounterValue<int> TankTrailParticleCount =
new ProfilerCounterValue<int>(TanksCategory, TankTrailParticleCountName, ProfilerMarkerDataUnit.Count,
ProfilerCounterOptions.FlushOnEndOfFrame | ProfilerCounterOptions.ResetToZeroOnFlush);
}
Опции FlushOnEndOfFrame и ResetToZeroOnFlush автоматически отправляют счетчик в поток данных Profiler и сбросают значение Count до нуля в конце кадра.
Обновление значения счетчика
Чтобы обновить значение счетчика, создайте скрипт MonoBehaviour, который устанавливает значение определенного вами счетчика.
Следующий скрипт MonoBehaviour подсчитывает количество следовых частиц, которые принадлежат назначенному GameObject каждому кадру в функции Update. Для этого он использует счетчик, называемый TankTrailParticleCount.
Следующий пример скрипта также создаёт открытое свойство Trail Particle System (m_TrailParticleSystem) в Inspector:
using UnityEngine;
class TankMovement : MonoBehaviour
{
public ParticleSystem m_TrailParticleSystem;
void Update()
{
GameStats.TankTrailParticleCount.Value += m_TrailParticleSystem.particleCount;
}
}
Добавление счетчиков Profiler в пользовательский модуль Profiler
Чтобы отобразить счетчик Profiler в пользовательском модуле Profiler с помощью кода, необходимо создать новый скрипт ProfilerModule и определить свойства модуля, включая отображаемые счетчики, его имя и значок. Информацию о том, как это сделать, см. в Создание модулей Profiler в коде.