Prefabs with nested MonoBehaviors - order of Awake() calls?

I am seeing some weirdness with instantiating prefabs that contain nested children that also have their own custom MonoBehavior scripts on them.


* Prefab PlayingCard [Card.cs]
    !-- Front [Sprite.cs]
    !-- Back [Sprite.cs]

I instantiate PlayingCard.
Front runs Sprite Awake().
PlayingCard runs Card Awake().
Back runs Sprite Awake().

Shouldn’t the children (front and back) all run their Awake methods before PlayingCard? I have tried messing with the script execution order but it never changes the order here.

Just to be clear, I am not using nested prefabs. 1 prefab that has 3 game objects, each one with its own script.

No, scripts are run in an undetermined order which means that a child can have its awake before a parent. IF!!! you have a case where you know a specific script needs to run (update/start/awake) before another script you can modify their execution order by Edit->Project Settings->Script Execution Order