# ProfilerTimeSampleSelection

> Constructs a selection object that can be passed to IProfilerFrameTimeViewSampleSelectionController.SetSelection to change the selection.

## Definition

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

## ProfilerTimeSampleSelection(long, string, string, ulong, int, string)

Constructs a selection object that can be passed to [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md) to change the selection.

```csharp
public ProfilerTimeSampleSelection(long frameIndex, string threadGroupName, string threadName, ulong threadId, int rawSampleIndex, string sampleName = null)
```

### Parameters

**** (\[long]\(https\://learn.microsoft.com/dotnet/api/system.int64)): The 0 based index of the frame the sample exists in. Note that the Profiler Window UI shows the frame index as n+1. When this value is outside of the range described by [ProfilerWindow.firstAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/firstavailableframeindex.md) and [ProfilerWindow.lastAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/lastavailableframeindex.md), or smaller than 0, Unity will throw an ArgumentOutOfRangeException.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the thread group. An empty string, which means the thread isn't part of a thread group. "Job", "Loading" and "Scripting Threads" are examples of such thread group names.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the thread, e.g. "Main Thread", "Render Thread" or "Worker 0". When this value is null or an empty string, Unity will throw an ArgumentException.**** (\[ulong]\(https\://learn.microsoft.com/dotnet/api/system.uint64)): The ID of the thread. When the default value of [FrameDataView.invalidThreadId](/engine/6000.5/script-reference/unityeditor/profiling/framedataview/invalidthreadid.md) is passed, Unity searches for the sample in the first thread matching the provided threadGroupName and threadName. Specify this threadId if there are multiple threads with the same name. Use a threadId or threadId to retrieve the ID to a specific thread, if you need it to be specific.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The raw index of a sample, i.e. the index as if would be used with [RawFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/rawframedataview.md) and NOT an Item ID as it would be used with [HierarchyFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/hierarchyframedataview.md). Use MergeSamplesWithTheSameName to get raw sample indices when working with [HierarchyFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/hierarchyframedataview.md).**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the sample. When this value is null or empty, it will be filled by Unity on making a valid selection by passing this object to [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md).

### Remarks

**Throws:**

*System.ArgumentException* if *threadName* or *rawSampleIndices* is empty. *System.ArgumentNullException* if *threadName* or *selection* is null. *System.ArgumentOutOfRangeException* if *frameIndex* When this value is outside of the range described by [ProfilerWindow.firstAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/firstavailableframeindex.md) and [ProfilerWindow.lastAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/lastavailableframeindex.md), or smaller than 0. *System.ArgumentOutOfRangeException* if *rawSampleIndex* or any index in *rawSampleIndices* is smaller than 0.

Additional Resources: [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md).

## ProfilerTimeSampleSelection(long, string, string, ulong, IList\<int>, string)

Constructs a selection object that can be passed to [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md) to change the selection.

```csharp
public ProfilerTimeSampleSelection(long frameIndex, string threadGroupName, string threadName, ulong threadId, IList<int> rawSampleIndices, string sampleName = null)
```

### Parameters

**** (\[long]\(https\://learn.microsoft.com/dotnet/api/system.int64)): The 0 based index of the frame the sample exists in. Note that the Profiler Window UI shows the frame index as n+1. When this value is outside of the range described by [ProfilerWindow.firstAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/firstavailableframeindex.md) and [ProfilerWindow.lastAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/lastavailableframeindex.md), or smaller than 0, Unity will throw an ArgumentOutOfRangeException.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the thread group. An empty string, which means the thread isn't part of a thread group. "Job", "Loading" and "Scripting Threads" are examples of such thread group names.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the thread, e.g. "Main Thread", "Render Thread" or "Worker 0". When this value is null or an empty string, Unity will throw an ArgumentException.**** (\[ulong]\(https\://learn.microsoft.com/dotnet/api/system.uint64)): The ID of the thread. When the default value of [FrameDataView.invalidThreadId](/engine/6000.5/script-reference/unityeditor/profiling/framedataview/invalidthreadid.md) is passed, Unity searches for the sample in the first thread matching the provided threadGroupName and threadName. Specify this threadId if there are multiple threads with the same name. Use a threadId or threadId to retrieve the ID to a specific thread, if you need it to be specific.**** (\[IList\<int>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)): A list of sample indices as used with [RawFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/rawframedataview.md) and NOT a list of Item ID as would be used with [HierarchyFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/hierarchyframedataview.md). Use MergeSamplesWithTheSameName to get raw sample indices when working with [HierarchyFrameDataView](/engine/6000.5/script-reference/unityeditor/profiling/hierarchyframedataview.md). When this list is empty, Unity throws an ArgumentException.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The name of the sample. When this value is null or empty, it will be filled by Unity on making a valid selection by passing this object to [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md).

### Remarks

**Throws:**

*System.ArgumentException* if *threadName* or *rawSampleIndices* is empty. *System.ArgumentNullException* if *threadName* or *selection* is null. *System.ArgumentOutOfRangeException* if *frameIndex* When this value is outside of the range described by [ProfilerWindow.firstAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/firstavailableframeindex.md) and [ProfilerWindow.lastAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/lastavailableframeindex.md), or smaller than 0. *System.ArgumentOutOfRangeException* if *rawSampleIndex* or any index in *rawSampleIndices* is smaller than 0.

Additional Resources: [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md).

## ProfilerTimeSampleSelection(ProfilerTimeSampleSelection)

Constructs a selection object that can be passed to [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md) to change the selection.

```csharp
public ProfilerTimeSampleSelection(ProfilerTimeSampleSelection selection)
```

### Parameters

**** (\[ProfilerTimeSampleSelection]\(/engine/6000.5/script-reference/unityeditor/profiling/profilertimesampleselection)): An existing selection to make a copy of. When this value is null, Unity throws an ArgumentNullException.

### Remarks

**Throws:**

*System.ArgumentException* if *threadName* or *rawSampleIndices* is empty. *System.ArgumentNullException* if *threadName* or *selection* is null. *System.ArgumentOutOfRangeException* if *frameIndex* When this value is outside of the range described by [ProfilerWindow.firstAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/firstavailableframeindex.md) and [ProfilerWindow.lastAvailableFrameIndex](/engine/6000.5/script-reference/unityeditor/profilerwindow/lastavailableframeindex.md), or smaller than 0. *System.ArgumentOutOfRangeException* if *rawSampleIndex* or any index in *rawSampleIndices* is smaller than 0.

Additional Resources: [IProfilerFrameTimeViewSampleSelectionController.SetSelection](/engine/6000.5/script-reference/unityeditor/profiling/iprofilerframetimeviewsampleselectioncontroller/setselection.md).
