# NewStaticSafetyId

> Allocates a new static safety ID to store information for the provided type.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Collections.LowLevel.Unsafe](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe.md)
* **Assembly:** UnityEngine.ManagedKernelModule

## NewStaticSafetyId(byte\*, int)

Allocates a new static safety ID to store information for the provided type.

```csharp
public static int NewStaticSafetyId(byte* ownerTypeNameBytes, int byteCount)
```

### Parameters

**** (\[byte\*]\(https\://learn.microsoft.com/dotnet/api/system.byte)): The name of the scripting type that owns the [AtomicSafetyHandle](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle.md), to be embedded in error messages involving the handle. This must be a UTF8-encoded byte array, and doesn't have to be null-terminated.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): The number of bytes in the `ownerTypeNameBytes` array, excluding the optional null terminator.

### Returns

| Type                                                       | Description                    |
| ---------------------------------------------------------- | ------------------------------ |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | The newly allocated safety ID. |

### Remarks

After creating a new static safety ID, use [AtomicSafetyHandle.SetStaticSafetyId](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/setstaticsafetyid.md) to assign it to the applicable [AtomicSafetyHandle](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle.md) instances.

The job debugger uses this static safety ID to look up the provided type's name, and any custom error messages created with [AtomicSafetyHandle.SetCustomErrorMessage](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/setcustomerrormessage.md). Without this information, the job debugger can only give general error messages that might not clearly identify the source of the error.

## NewStaticSafetyId\<T>()

Allocates a new static safety ID, to store information for the provided type T.

```csharp
public static int NewStaticSafetyId<T>()
```

### Returns

| Type                                                       | Description                    |
| ---------------------------------------------------------- | ------------------------------ |
| [int](https://learn.microsoft.com/dotnet/api/system.int32) | The newly allocated safety ID. |

### Remarks

After creating a new static safety ID, use [AtomicSafetyHandle.SetStaticSafetyId](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/setstaticsafetyid.md) to assign it to the applicable [AtomicSafetyHandle](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle.md) instances.

The job debugger uses this static safety ID to look up the provided type's name, and any custom error messages created with [AtomicSafetyHandle.SetCustomErrorMessage](/engine/6000.7/script-reference/unity/collections/lowlevel/unsafe/atomicsafetyhandle/setcustomerrormessage.md). Without this information, the job debugger can only give general error messages that might not clearly identify the source of the error.

This variant uses the name of the provided type `T` as the handle's owner type name.
