# BeforeSceneLoad

> Callback invoked when the first scene's objects are loaded into memory but before Awake has been called.

## Definition

* **Type:** Field
* **Namespace:** [UnityEngine](/engine/6000.6/script-reference/unityengine.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
BeforeSceneLoad = 1
```

### Remarks

For more information on the execution order of this option relative to the others, refer to [RuntimeInitializeOnLoadMethodAttribute](/engine/6000.6/script-reference/unityengine/runtimeinitializeonloadmethodattribute.md).

### Examples

```csharp
// Demonstration of the RuntimeInitializeLoadType.BeforeSceneLoad attribute to find inactive objects before Awake has been 
// called for the first scene being loaded. Then from these inactive objects we find which ones will be active after Awake is called later.
using UnityEngine;

class MyClass
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    private static void FirstSceneLoading()
    {
        var components = UnityEngine.Object.FindObjectsByType(typeof(MonoBehaviour), FindObjectsInactive.Include);
        var willBeActiveAfterSceneLoad = 0;
        foreach (var c in components)
        {
            if (WillBeActiveAfterSceneLoad(((Component)c).gameObject))
                willBeActiveAfterSceneLoad++;
        }
        Debug.Log("BeforeSceneLoad. Will be Active after Awake, count: " + willBeActiveAfterSceneLoad);
    }

    static bool WillBeActiveAfterSceneLoad(GameObject gameObject)
    {
        Transform current = gameObject.transform;
        while (current != null)
        {
            if (!current.gameObject.activeSelf)
                return false;

            current = current.parent;
        }

        return true;
    }
}
```
