# EntityId

> A unique identifier for a Unity object.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine](/engine/6000.3/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<EntityId>](https://learn.microsoft.com/dotnet/api/system.iequatable-1), [IComparable\<EntityId>](https://learn.microsoft.com/dotnet/api/system.icomparable-1)

```csharp
public struct EntityId : IEquatable<EntityId>, IComparable<EntityId>
```

## Remarks

Unity assigns an `EntityId` to every object it loads or creates, and uses that identifier to refer to the object for as long as the object exists. To get the identifier of an object, use `Object.GetEntityId`. To resolve an identifier back to an object, use [Resources.EntityIdToObject](/engine/6000.3/script-reference/unityengine/resources/entityidtoobject.md).

The internal representation of `EntityId` is an implementation detail and might change between versions. To ensure compatibility, avoid the following patterns:

* Assuming any particular bit layout or sign conventions.
* Manipulating individual bits of the `EntityId` value.
* Sorting `EntityId` values to determine creation order.
* Using `Object.GetHashCode` as a substitute for, or to derive, an `EntityId`.
* Serializing `EntityId` with `ToString` and deserializing with integer parsing.

To work with `EntityId` values, use the provided API methods, such as [EntityId.IsValid](/engine/6000.3/script-reference/unityengine/entityid/isvalid.md), [EntityId.Equals](/engine/6000.3/script-reference/unityengine/entityid/equals.md), and [EntityId.GetHashCode](/engine/6000.3/script-reference/unityengine/entityid/gethashcode.md).

`EntityId` converts implicitly to and from `int`, so existing code that contains object identifiers in integers continues to compile. Store object identity in `EntityId` fields, parameters, and collection keys rather than in `int` values, and use the `EntityId` API instead of integer arithmetic.

**Note**: Code that previously used `InstanceID` as an integer should be updated to use the `EntityId` API methods instead.

Additional Resources: [Migrate from InstanceID to EntityId](/engine/6000.3/manual/scripting/object-oriented-development/fundamental-unity-types/instanceid-to-entityid-migration.md).

## Static Properties

| Property                                                             | Description                                                                                                           |
| -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [None](/engine/6000.3/script-reference/unityengine/entityid/none.md) | Gets an EntityId that represents no valid Object or Entity. Use this to indicate an invalid or unassigned identifier. |

## Methods

| Method                                                                             | Description                                                                                                                                  |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| [CompareTo](/engine/6000.3/script-reference/unityengine/entityid/compareto.md)     | Compares this EntityId to another EntityId.                                                                                                  |
| [Equals](/engine/6000.3/script-reference/unityengine/entityid/equals.md)           | Determines whether the specified integer value is equal to this EntityId.                                                                    |
| [GetHashCode](/engine/6000.3/script-reference/unityengine/entityid/gethashcode.md) | Returns a hash code for this EntityId.                                                                                                       |
| [IsValid](/engine/6000.3/script-reference/unityengine/entityid/isvalid.md)         | Determines whether this EntityId is set to a value other than [EntityId.None](/engine/6000.3/script-reference/unityengine/entityid/none.md). |
| [ToString](/engine/6000.3/script-reference/unityengine/entityid/tostring.md)       | Returns a string representation of this EntityId.                                                                                            |

## Operators

| Operator                                                                                     | Description                                                                   |
| -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [operator ==](/engine/6000.3/script-reference/unityengine/entityid/op-equality.md)           | Determines whether two EntityId instances are equal.                          |
| [operator >](/engine/6000.3/script-reference/unityengine/entityid/op-greaterthan.md)         | Determines whether the first EntityId is greater than the second.             |
| [operator >=](/engine/6000.3/script-reference/unityengine/entityid/op-greaterthanorequal.md) | Determines whether the first EntityId is greater than or equal to the second. |
| [EntityId](/engine/6000.3/script-reference/unityengine/entityid/op-implicit.md)              | Implicitly converts an integer to an `EntityId`.                              |
| [int](/engine/6000.3/script-reference/unityengine/entityid/op-implicit.md)                   | Implicitly converts an `EntityId` to an integer.                              |
| [operator !=](/engine/6000.3/script-reference/unityengine/entityid/op-inequality.md)         | Determines whether two EntityId instances are not equal.                      |
| [operator \<](/engine/6000.3/script-reference/unityengine/entityid/op-lessthan.md)           | Determines whether the first EntityId is less than the second.                |
| [operator \<=](/engine/6000.3/script-reference/unityengine/entityid/op-lessthanorequal.md)   | Determines whether the first EntityId is less than or equal to the second.    |
