프로파일러 카운터를 추가하려면 다음을 수행하는 스크립트를 생성합니다.
이 섹션의 코드 예시는 프로파일러 카운터를 추가하여 Unity가 게임 오브젝트 트레일 효과의 모든 인스턴스에 대해 생성한 전체 파티클 수를 추적합니다. 이 예시에서 게임 오브젝트의 이름은 Tank입니다.
일부 예시에서는 Profiling Core 패키지를 사용하므로 시작하기 전에 설치해야 합니다. Unity Profiling Core 패키지는 코어 패키지이므로 패키지 관리자 UI에서 검색할 수 없습니다. 패키지를 설치하려면 다음 중 하나를 수행합니다.
com.unity.profiling.core).새 카운터를 만드는 방법은 다음과 같습니다.
중요: 카운터를 생성할 때는 새로운 카운터가 속하게 될 프로파일러 카테고리를 지정해야 합니다. 이를 위해서는 ProfilerCategory 클래스의 기존 Unity 카테고리를 사용하면 됩니다. 다음 예제의 스크립트는 기존 ProfilerCategory.Scripts 카테고리를 사용합니다.
Profiler counters API는 푸시 및 풀 작업을 지원합니다. 카운터의 값을 프로파일러로 푸시하거나, 프로파일러가 프레임 마지막에 값을 가져올 수 있습니다.
데이터가 자주 변경되지 않는다면(예: 프레임당 한 번) ProfilerCounter API를 사용하여 카운터 데이터를 프로파일러로 푸시하십시오. 하나의 프레임에서 데이터가 여러 번 변경된다면 ProfilerCounterValue API를 사용하십시오. 이렇게 하면 프로파일러가 프레임이 끝날 때 마지막 값을 자동으로 가져옵니다.
다음 스크립트 예시는 이름이 Tank Trail Particles이고 단위는 ProfilerMarkerDataUnit.Count인 ProfilerCounterValue TankTrailParticleCount를 정의합니다.
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는 해당 카운터를 자동으로 프로파일러 데이터 스트림으로 보내고 카운터 값을 프레임 종료 시 0으로 초기화합니다.
카운터 값을 업데이트하려면 정의한 카운터의 값을 설정하는 MonoBehaviour 스크립트를 생성하십시오.
다음 MonoBehaviour 스크립트는 업데이트 함수의 모든 프레임마다 할당된 게임 오브젝트에 속하는 트레일 파티클의 수를 계산합니다. 이때 TankTrailParticleCount라는 카운터가 사용됩니다.
다음 예시 스크립트는 또한 인스펙터에 있는 Trail Particle System (m_TrailParticleSystem)이라는 공용 프로퍼티를 생성합니다.
using UnityEngine;
class TankMovement : MonoBehaviour
{
public ParticleSystem m_TrailParticleSystem;
void Update()
{
GameStats.TankTrailParticleCount.Value += m_TrailParticleSystem.particleCount;
}
}
코드를 통해 커스텀 프로파일러 모듈에 프로파일러 카운터를 표시하려면, 반드시 새로운 ProfilerModule 스크립트를 생성해야 하고 표시되는 카운터, 이름, 아이콘을 포함한 모듈의 프로퍼티를 정의해야 합니다. 이를 수행하는 방법은 코드에서 프로파일러 모듈 생성을 참조하십시오.