IEnumerator InvokeInit() { GameObject airGatesGO = null; while (airGatesGO == null) { airGatesGO = GameObject.Find(Constants.AirGatesName); yield return(null); } airGates.Clear(); foreach (Transform child in airGatesGO.transform) { //Debug.Log("Adding air gate " + child.gameObject.name); airGates.Add(child.gameObject.GetComponent <AirGate>()); yield return(null); } SetAirGateNumbers(); yield return(null); SetAllAirGatesNone(); droneRacer = null; while (droneRacer == null) { droneRacer = Controller.DroneRacer.FindDroneRacer(); yield return(null); } droneRacer.RaceStatus = RaceStatus.None; droneRacerArm = droneRacer.GetComponent <DroneRacerArm>(); InitLocalRaceData(); raceManagerIsReady = true; initializing = false; }