# Start()

> Start is called on the frame when a script is enabled just before any of the Update methods are called the first time.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine](/engine/6000.5/script-reference/unityengine.md)

```csharp
public void Start()
```

### Remarks

`Start` is called exactly once in the lifetime of the script and always after [MonoBehaviour.Awake()](/engine/6000.5/script-reference/unityengine/monobehaviour/awake.md). `Start` might not be called on the same frame as `Awake` if the script is not enabled at initialization time. `Start` is not called on any object until `Awake` has been called on every object in the scene. In cases where object A's initialization code relies on object B already being initialized, you can initialize B in B's `Awake` and initialize A in A's `Start`. If you instantiate objects at runtime from [MonoBehaviour.Update()](/engine/6000.5/script-reference/unityengine/monobehaviour/update.md), `Awake` and `Start` are called on the instantiated objects before the end of the current frame. `Start` can be defined as a [coroutine](/engine/6000.5/manual/scripting/coroutines-section/coroutines.md).

### Examples

```csharp

// Initializes the target variable.
// target is private and thus not editable in the Inspector

// The ExampleClass starts with Awake.  The GameObject class has activeSelf
// set to false.  When activeSelf is set to true the Start() and Update()
// functions will be called causing the ExampleClass to run.
// Note that ExampleClass (Script) in the Inspector is turned off.  It
// needs to be ticked to make script call Start.

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    private float update;

    void Awake()
    {
        Debug.Log("Awake");
        update = 0.0f;
    }

    IEnumerator Start()
    {
        Debug.Log("Start1");
        yield return new WaitForSeconds(2.5f);
        Debug.Log("Start2");
    }

    void Update()
    {
        update += Time.deltaTime;
        if (update > 1.0f)
        {
            update = 0.0f;
            Debug.Log("Update");
        }
    }
}
```
