# ShouldRunSystem()

> Reports whether this system satisfies the criteria to update. This function is used internally to determine whether the system's OnUpdate function can be skipped.

## Definition

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

```csharp
public bool ShouldRunSystem()
```

### Returns

| Type                                                          | Description                                            |
| ------------------------------------------------------------- | ------------------------------------------------------ |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the system should be updated, or false if not. |

### Remarks

By default, systems will invoke OnUpdate every frame.

If a system calls [SystemState.RequireForUpdate](/engine/7000.0/script-reference/unity/entities/systemstate/requireforupdate.md) or [SystemState.RequireForUpdate](/engine/7000.0/script-reference/unity/entities/systemstate/requireforupdate.md) in OnCreate, it will only update if all of its required components exist and required queries match existing chunks. This check uses [IsEmptyIgnoreFilter], so the queries may still be empty if they use filters or [Enableable Components].

If a system has the [RequireMatchingQueriesForUpdateAttribute](/engine/7000.0/script-reference/unity/entities/requirematchingqueriesforupdateattribute.md) it will update if any EntityQuery it uses match existing chunks. This check also uses [IsEmptyIgnoreFilter], so all queries may still be empty if they use filters or [Enableable Components].

Note: Other factors might prevent a system from updating, even if this method returns true. For example, a system will not be updated if its [Enabled] property is false.

[IsEmptyIgnoreFilter]: xref:Unity.Entities.EntityQuery.IsEmptyIgnoreFilter

[Enableable Components]: xref:Unity.Entities.IEnableableComponent

[Enabled]: xref:Unity.Entities.SystemState.Enabled
