# AddComponentData

> Adds a component to a set of entities defined by the EntityQuery and sets the component of each entity in the query to the value in the component array.

## Definition

* **Type:** Method
* **Namespace:** [Unity.Entities](/engine/7000.0/script-reference/unity/entities.md)
* **Assembly:** UnityEngine.EntitiesModule

## AddComponentData\<T>(EntityQuery, NativeArray\<T>)

Adds a component to a set of entities defined by the EntityQuery and sets the component of each entity in the query to the value in the component array.

```csharp
public void AddComponentData<T>(EntityQuery entityQuery, NativeArray<T> componentArray) where T : unmanaged, IComponentData
```

### Parameters

**** (\[EntityQuery]\(/engine/7000.0/script-reference/unity/entities/entityquery)): The EntityQuery defining the entities to add component to**** (\[NativeArray\<T>]\(/engine/7000.0/script-reference/unity/collections/nativearray1)): The NativeArray to add the components to.

### Remarks

You can use this method to add a component to an Entity.

Adding components changes an entity's archetype and results in the entity being moved to a different chunk. componentArray.Length must match entityQuery.ToEntityArray().Length.

## AddComponentData\<T>(Entity, T)

Adds a component to an entity and set the value of that component.

```csharp
public bool AddComponentData<T>(Entity entity, T componentData) where T : unmanaged, IComponentData
```

### Parameters

**** (\[Entity]\(/engine/7000.0/script-reference/unity/entities/entity)): The entity.**** (T): The data to set.

### Returns

| Type                                                          | Description                                           |
| ------------------------------------------------------------- | ----------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Returns false if the entity alredy had the component. |

### Remarks

Can add any kind of component except chunk components or shared components.

Returns false if the entity already had the component. The component's data is set regardless.

Adding a component changes an entity's archetype and results in the entity being moved to a different chunk.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before adding the component. No additional jobs can start before the method is finished. A sync point can cause a drop in performance because the ECS framework might not be able to use the processing power of all available cores.

## AddComponentData\<T>(SystemHandle, T)

Adds a component to an entity associated with a system and sets the value of that component.

```csharp
public bool AddComponentData<T>(SystemHandle system, T componentData) where T : unmanaged, IComponentData
```

### Parameters

**** (\[SystemHandle]\(/engine/7000.0/script-reference/unity/entities/systemhandle)): The system handle.**** (T): The data to set.

### Returns

| Type                                                          | Description                                            |
| ------------------------------------------------------------- | ------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | Returns false if the entity already had the component. |

### Remarks

Can add any kind of component except chunk components or shared components.

Returns false if the entity already had the component. The component's data is set regardless.

Adding a component changes an entity's archetype and results in the entity being moved to a different chunk.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before adding the component. No additional jobs can start before the method is finished. A sync point can cause a drop in performance because the ECS framework might not be able to use the processing power of all available cores.
