# Use a script
Beginner
Programmer
To use a script, add it to an entity as a component. You can do this in Game Studio or in code. Stride runs scripts when the entity they are attached to loads.
You can add a single script to as many entities as you need. You can also add multiple scripts to single entities; in this case, Stride creates multiple instances of the script. This means the same script can have different values in its [public properties and fields](public-properties-and-fields.md).
## Add a script in Game Studio
There are three ways to add scripts to entities in Game Studio:
* drag the script from the asset view to the **entity tree**
* drag the script from the asset view to the **entity properties**
* add the script in the **property grid**
### Drag to the entity tree
This method automatically creates a new entity that contains the script.
1. In the **solution explorer** (in the bottom left by default), select the assembly that contains your script. Game Studio shows your script in the **asset view**.

2. Drag the script from the asset view to the **entity tree**.
Game Studio adds an entity to your scene, with the script as a component on the entity.

### Drag to the property grid
1. In the **entity tree** (on the left by default), or in the scene, select the entity you want to add the script to.
2. In the **solution explorer** (in the bottom left by default), select the assembly that contains your script. Game Studio shows your script in the **asset view**.

3. Drag the script from the **asset view** to the **property grid**.
Game Studio adds the script to the entity.
### Add the script in the property grid
1. In the **scene editor**, select the entity you want to add the script to.

2. In the **property grid** (on the right by default), click **Add component** and select the script you want to add.

Game Studio adds the script to the entity.
>[!Note]
>You can customize where scripts appear in the dropdown using the `ComponentCategoryAttribute`:
>```cs
>[ComponentCategory("My Startup Scripts")]
>public class SampleStartupScript : StartupScript
>{
> public override void Start()
> {
> // Do some stuff during initialization
> }
>}
>```
## Add a script from code
The code below adds a script to an entity.
```cs
// myEntity is an existing entity in the scene; myAsyncScript is the script you want to add to the entity
myEntity.Add(new myAsyncScript());
```
## See also
* [Types of script](types-of-script.md)
* [Create a script](create-a-script.md)
* [Public properties and fields](public-properties-and-fields.md)
* [Scheduling and priorities](scheduling-and-priorities.md)
* [Events](events.md)
* [Debugging](debugging.md)
* [Preprocessor variables](preprocessor-variables.md)