UI hierarchy: How to predict the order in which Start() is called?

Hello Unity Community,

Given a hierarchy of UI elements, is there a way to change or predict the order in which Start() is called? For example: One of my Scenes has the following hierarchy:

Scene:
|-  Canvas
    |-  Panel Player 1
        |- Some UI elements
        |- Some UI elements
    |-  Panel Player 2
        |- Some UI elements
        |- Some UI elements
    |-  Panel Player 3
        |- Some UI elements
        |- Some UI elements
    |-  Panel Player 4
        |- Some UI elements
        |- Some UI elements

Note: “Panel Player 1-4” are four instances of a prefab.

Now, when stepping through the code, the order in which the various Start() methods are executed is:

  1. Player Panel 2
  2. Player Panel 4
  3. Player Panel 3
  4. Canvas
  5. Player Panel 1

Kinda arbitrary… isn’t it? Now I’m curious what causes that order and how to change it. Is there a way to influence the order in which the Start() methods are called? Or is this a bug in Unity (5.4.1.f1)?

One thing that’s remarkable is that it’s always the same order. Also Start() and Awake() of both, the Canvas and the ‘Panel Player 1-4’, are empty (i.e. they ain’t call each other). However, canvas and panels do have references assigned to each other in Unitys inspector view.

Please let me know if you have any explanation about what causes that weird execution order and how to fix it.
Thank you!