# SetSharedComponent

> Sets the shared component of all entities in the query.

## Definition

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

## SetSharedComponent\<T>(EntityQuery, T)

Sets the shared component of all entities in the query.

```csharp
public void SetSharedComponent<T>(EntityQuery query, T componentData) where T : unmanaged, ISharedComponentData
```

### Parameters

**** (\[EntityQuery]\(/engine/7000.0/script-reference/unity/entities/entityquery)): The query where matching entities will be assigned the shared component to.**** (T): A shared component object containing the values to set.

### Remarks

The component data stays in the same chunk, the internal shared component data indices will be adjusted.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before setting 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.

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

Sets the shared component of an entity.

```csharp
public void SetSharedComponent<T>(Entity entity, T componentData) where T : unmanaged, ISharedComponentData
```

### Parameters

**** (\[Entity]\(/engine/7000.0/script-reference/unity/entities/entity)): The entity**** (T): An unmanaged shared component object containing the values to set.

### Remarks

Changing a shared component value of an entity results in the entity being moved to a different chunk. The entity moves to a chunk with other entities that have the same shared component values. A new chunk is created if no chunk with the same archetype and shared component values currently exists.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before setting 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.

## SetSharedComponent\<T>(NativeArray\<Entity>, T)

Sets the shared component value on an array of entities

```csharp
public void SetSharedComponent<T>(NativeArray<Entity> entities, T componentData) where T : unmanaged, ISharedComponentData
```

### Parameters

**** (\[NativeArray\<Entity>]\(/engine/7000.0/script-reference/unity/collections/nativearray1)): The target entities**** (T): An unmanaged shared component object containing the values to set.

### Remarks

Changing a shared component value of an entity results in the entity being moved to a different chunk. The entity moves to a chunk with other entities that have the same shared component values. A new chunk is created if no chunk with the same archetype and shared component values currently exists.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before setting 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.

## SetSharedComponent\<T>(ArchetypeChunk, T)

Sets the shared component on a chunk.

```csharp
public void SetSharedComponent<T>(ArchetypeChunk chunk, T componentData) where T : unmanaged, ISharedComponentData
```

### Parameters

**** (\[ArchetypeChunk]\(/engine/7000.0/script-reference/unity/entities/archetypechunk)): The target chunk**** (T): An unmanaged shared component object containing the values to set.

### Remarks

Changing a shared component value of a chunk results effectively changes the value for all entities in that chunk. This is generally more efficient than setting the values individually on each entity.

**Important:** This method creates a sync point, which means that the EntityManager waits for all currently running jobs to complete before setting 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.
