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

Создание пользовательских счетчиков Profiler

Чтобы отобразить пользовательские показатели в окне профилировщикаUnity, которое поможет вам оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
См. в Словарь
, вы должны использовать API ProfilerCounter в Unity Profiling Core.

Вы можете использовать Profiling Core API для отслеживания метрики в своем приложении. Вы можете отобразить информацию, которую отслеживает счетчик, в Unity Profiler. Используйте собственные счетчики Profilerвстроенные в код API ProfilerCounter, чтобы отслеживать такие показатели, как количество врагов, появляющихся в вашей игре. Подробнее
См. Словарь
, чтобы сравнить системные показатели и выявить проблемы с производительностью в окне Profiler.

Настраиваемый счетчик Profiler может отображать данные из ProfilerCounter или ProfilerCounterValue.

Полное руководство по использованию Unity Profiling Core API для создания счетчиков Profiler см. в Руководство по API счетчиков Profiler.

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

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

Определение счетчика

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

При создании счетчика необходимо указать, к какой категории профилировщика принадлежит ваш новый счетчик. Для этого используйте существующую категорию Unity. Например, в приведенном ниже примере скрипта используется существующая категория ProfilerCategory.Scripts. Дополнительную информацию см. в разделе Использование категорий Profiler

В следующем примере скрипта определяется ProfilerCounterValue TankTrailParticleCount с названием "Tank Trail Particles". Этот счетчик имеет единицу измерения «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 на ноль в момент конец кадра.

Использование категорий Profiler

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

Назначение счетчика профилировщика категории профилировщика

Счетчик Profiler должен принадлежать к категории Profiler. Вы должны назначить категорию счетчику Profiler при определении счетчика. Для этого используйте дополнительный аргумент конструктора ProfilerModule autoEnabledCategoryNames, чтобы назначить одну или несколько категорий счетчику Profiler. Пример этого метода приведен в следующем примере кода:

using Unity.Profiling; using Unity.Profiling.Editor; [System.Serializable] [ProfilerModuleMetadata("Tank Effects")] public class TankEffectsProfilerModule : ProfilerModule { static readonly ProfilerCounterDescriptor[] k_Counters = new ProfilerCounterDescriptor[] { new ProfilerCounterDescriptor(GameStatistics.TankTrailParticleCountName, GameStatistics.TanksCategory), new ProfilerCounterDescriptor(GameStatistics.ShellExplosionParticleCountName, GameStatistics.TanksCategory), new ProfilerCounterDescriptor(GameStatistics.TankExplosionParticleCountName, GameStatistics.TanksCategory), }; // Ensure that both ProfilerCategory.Scripts and ProfilerCategory.Memory categories are enabled when our module is active. static readonly string[] k_AutoEnabledCategoryNames = new string[] { ProfilerCategory.Scripts.Name, ProfilerCategory.Memory.Name }; // Pass the auto-enabled category names to the base constructor. public TankEffectsProfilerModule() : base(k_Counters, autoEnabledCategoryNames: k_AutoEnabledCategoryNames) { } }

Обновление значения счетчика

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

Пример сценария обновления значения счетчика

В этом примере скрипт MonoBehaviour подсчитывает количество частиц следов, принадлежащих назначенному игровому объекту, каждый кадр в функции обновления. Для этого используется счетчик с именем TankTrailParticleCount.

В следующем примере сценария также создается общедоступное свойство с именем Trail Particle SystemКомпонент, который имитирует текучие объекты, такие как жидкости, облака и пламя, создавая и анимируя большое количество небольших 2D-изображений в сцене. Подробнее
См. в Словарь
(m_TrailParticleSystem) в Инспектореокне Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройки проекта, что позволяет просматривать и редактировать значения. Подробнее
См. в Словарь
:

using UnityEngine; class TankMovement : MonoBehaviour { public ParticleSystem m_TrailParticleSystem; void Update() { GameStats.TankTrailParticleCount.Value += m_TrailParticleSystem.particleCount; } }

Использование счетчиков Profiler для профилирования сборки выпуска

Когда вы запускаете свой проект в релизном проигрывателе, у вас нет доступа к окну Profiler. Однако вы можете отображать счетчики как UI(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. В настоящее время Unity поддерживает три системы пользовательского интерфейса. Подробнее
Просмотр элементов Словарь
в выпущенном проигрывателе. Это означает, что вы можете включить инструменты профилирования в выпущенное приложение. Чтобы сделать это, см. Получение значений счетчиков в игроках в Руководство по API счетчиков профилировщика.

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

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