# ProfilerCounterDescriptor

> Initializes and returns an instance of ProfilerCounterDescriptor.

## Definition

* **Type:** Constructor
* **Namespace:** [Unity.Profiling.Editor](/engine/6000.5/script-reference/unity/profiling/editor.md)
* **Assembly:** UnityEditor.CoreModule

## ProfilerCounterDescriptor(string, ProfilerCategory)

Initializes and returns an instance of [ProfilerCounterDescriptor](/engine/6000.5/script-reference/unity/profiling/editor/profilercounterdescriptor.md).

```csharp
public ProfilerCounterDescriptor(string name, ProfilerCategory category)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the Profiler counter to describe.**** (\[ProfilerCategory]\(/engine/6000.5/script-reference/unity/profiling/profilercategory)): The category of the Profiler counter to describe. A [ProfilerCategory](/engine/6000.5/script-reference/unity/profiling/profilercategory.md).

### Remarks

```csharp
using System;
using Unity.Profiling;
using Unity.Profiling.Editor;

[ProfilerModuleMetadata("Garbage Collection")]
public class GarbageCollectionProfilerModule : ProfilerModule
{
    static readonly ProfilerCounterDescriptor[] k_ChartCounters = new ProfilerCounterDescriptor[]
    {
        new ProfilerCounterDescriptor("GC Reserved Memory", ProfilerCategory.Memory),
        new ProfilerCounterDescriptor("GC Used Memory", ProfilerCategory.Memory),
        new ProfilerCounterDescriptor("GC Allocated In Frame", ProfilerCategory.Memory),
    };

    public GarbageCollectionProfilerModule() : base(k_ChartCounters) {}
}
```

Additional Resources: [ProfilerModule](/engine/6000.5/script-reference/unity/profiling/editor/profilermodule.md).

## ProfilerCounterDescriptor(string, string, ProfilerCategory)

Initializes and returns an instance of [ProfilerCounterDescriptor](/engine/6000.5/script-reference/unity/profiling/editor/profilercounterdescriptor.md) with a description.

```csharp
public ProfilerCounterDescriptor(string name, string description, ProfilerCategory category)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the Profiler counter to describe.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): A human-readable description of the Profiler counter.**** (\[ProfilerCategory]\(/engine/6000.5/script-reference/unity/profiling/profilercategory)): The category of the Profiler counter to describe. A [ProfilerCategory](/engine/6000.5/script-reference/unity/profiling/profilercategory.md).

### Remarks

```csharp
using System;
using Unity.Profiling;
using Unity.Profiling.Editor;

[ProfilerModuleMetadata("Custom Profiler Module")]
public class CustomProfilerModule : ProfilerModule
{
    static readonly ProfilerCounterDescriptor[] k_ChartCounters = new ProfilerCounterDescriptor[]
    {
        new ProfilerCounterDescriptor(
            "Active Entities",
            "Number of active entities in the current scene",
            ProfilerCategory.Scripts
        ),
        new ProfilerCounterDescriptor(
            "Physics Queries",
            "Number of physics queries performed this frame",
            ProfilerCategory.Physics
        ),
    };

    public CustomProfilerModule() : base(k_ChartCounters) {}
}
```

Additional Resources: [ProfilerModule](/engine/6000.5/script-reference/unity/profiling/editor/profilermodule.md).

## ProfilerCounterDescriptor(string, string)

Initializes and returns an instance of [ProfilerCounterDescriptor](/engine/6000.5/script-reference/unity/profiling/editor/profilercounterdescriptor.md).

```csharp
public ProfilerCounterDescriptor(string name, string categoryName)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the Profiler counter to describe.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The category name of the Profiler counter to describe.

### Remarks

```csharp
using System;
using Unity.Profiling;
using Unity.Profiling.Editor;

[ProfilerModuleMetadata("Garbage Collection")]
public class GarbageCollectionProfilerModule : ProfilerModule
{
    static readonly ProfilerCounterDescriptor[] k_ChartCounters = new ProfilerCounterDescriptor[]
    {
        new ProfilerCounterDescriptor("GC Reserved Memory", ProfilerCategory.Memory.Name),
        new ProfilerCounterDescriptor("GC Used Memory", ProfilerCategory.Memory.Name),
        new ProfilerCounterDescriptor("GC Allocated In Frame", ProfilerCategory.Memory.Name),
    };

    public GarbageCollectionProfilerModule() : base(k_ChartCounters) {}
}
```

Use this constructor when you need to specify the category by name as a string.

Additional Resources: [ProfilerModule](/engine/6000.5/script-reference/unity/profiling/editor/profilermodule.md).

## ProfilerCounterDescriptor(string, string, string)

Initializes and returns an instance of [ProfilerCounterDescriptor](/engine/6000.5/script-reference/unity/profiling/editor/profilercounterdescriptor.md) with a description.

```csharp
public ProfilerCounterDescriptor(string name, string description, string categoryName)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the Profiler counter to describe.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): A human-readable description of the Profiler counter.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The category name of the Profiler counter to describe.

### Remarks

```csharp
using System;
using Unity.Profiling;
using Unity.Profiling.Editor;

[ProfilerModuleMetadata("Network Statistics")]
public class NetworkProfilerModule : ProfilerModule
{
    static readonly ProfilerCounterDescriptor[] k_ChartCounters = new ProfilerCounterDescriptor[]
    {
        new ProfilerCounterDescriptor(
            "Network Packets Sent",
            "Total number of network packets sent this frame",
            "Network"
        ),
        new ProfilerCounterDescriptor(
            "Network Packets Received",
            "Total number of network packets received this frame",
            "Network"
        ),
    };

    public NetworkProfilerModule() : base(k_ChartCounters) {}
}
```

Use this constructor when you need to specify both a description and the category by name as a string.

Additional Resources: [ProfilerModule](/engine/6000.5/script-reference/unity/profiling/editor/profilermodule.md).
