I'm working on a game, where the **map is generated**, and:

* The **map is generated** in an **Awake()**, so when an **object's Start() is called**, the map should be **fully initialized**.
* But the scene's **physics world won't be updated till the next FixedUpdate**.
* So when **Start() is called**, there is a high chance, that physics operations are **done in an incorrect world** (*like raycasting*)

I tried using **[Physics.SyncTransforms](https://docs.unity3d.com/ScriptReference/Physics.SyncTransforms.html)**, but it **didn't solve** the issue for some reason. (**Why?**)

My next approach was to **start the objects with a delay**. Precisely: after a **FixedUpdate**. 

* So I started a **Coroutine in the Start()** method, which **waits for a FixedUpdate**, then **starts the object**.
* But this caused that for example: **ObjectA's Update() is called before ObjectB's Start coroutine finishes**.

**How could I achieve that scenes won't be started until the scene is fully initialized?**

Is there a way to tell Unity to call every Start() i.e. 1 frame later? Or how else could I fix this? What is the best solution?