Start function of parent object not being called


I have a dynamic menu system that consists of instances of a MenuObject prefab. MenuObjects can contain submenu MenuObjects, and so on. Their start function determines and records their parent menu object and any child MenuObjects (that is, the submenu objects) if they exist. This is critical to the function of the menu system, as it is going to determine which to display at any one time.

Strangely, if I produce any combination of menu and submenu (and sub-submenu) objects as a menu hierarchy, they all determine their correct parent and children correctly, with the exception of the highest-level MenuObject, which states that it has no parents (correct) or children (incorrect). I have determined that the Start function is not being called for that object. If I copy the code into the Update function, it quickly assesses itself correctly. Obviously, this is not ideal.

Can anybody tell me why this may be happening?

Thank you in advance,


Indeed, the function was being run (thank you, perchik), but it’s content was not because it was encountering an error (which it could ignore) within the code. After the error was encountered, the rest was being ignored.

Once I noticed the error, the debug log quickly identified the problem. I think it’s time to go for a walk…

My guess is that your children do not exist yet in a state that allows you to reference them.

What happens of you give things a second to settle down?

void Start () {
	// Wait for stuff to settle down.
	StartCoroutine("letSettle", 1.0f);

private IEnumerator letSettle(float lag){
	yield return new WaitForSeconds( lag f);
	startGame ();