runtimeinitializeonload
This is an old revision of the document!
RuntimeInitializeOnLoadMethod
The documentation is not correct about this function running after awake. It does by default, but not if you specify a load type:
The order of callbacks is: 1)
- SubsystemRegistration
- AfterAssembliesLoad
- BeforeSplashScreen2)
- BeforeSceneLoad
- Unity MonoBehaviour.Awake() runs here
- AfterSceneLoad, Default
Providing no load type defaults to RuntimeInitializeLoadType.AfterSceneLoad, running the function after Awake.
Other versions that have been verified to also use this exact order:
- 2021.1.12f1 (editor only)
Methods with RuntimeInitializeLoadType.AfterSceneLoad, or RuntimeInitializeLoadType.BeforeSceneLoad will only be called for the first scene in a run of the application, not every scene. 3)
Other Nuanced Info
- If you create a GameObject and attach a MonoBehaviour to it in “BeforeSceneLoad”, or another early LoadType, the Awake function of that MonoBehavior WILL be called at the point of creating the GameObject. In other words, the Awake will be called earlier than the Awakes of GameObjects in Loaded. (discovered in 2021.1.15f1)
Example:
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void AutoRun() { GameObject obj = new GameObject("New Object", typeof(SomeMonoClass)); // Awake of SomeMonoClass will be called here }
- 'SceneManager.sceneLoaded' event subscribers will also be called BEFORE “AfterSceneLoad”. By the name of the event, you may assume that the event is called AFTER the scene was loaded, but it appears to be called just before. (discovered in 2021.1.15f1)
runtimeinitializeonload.1630303715.txt.gz · Last modified: 2025/01/15 04:35 (external edit)