I think multiple scenes are definitely worth chasing. You need to make everything in your game tolerant of perhaps not having stuff ready at the same time, and you have to track things that you need only ONE of:
- Camera (Main)
- Audio Listener
- EventSystem
I like to put all of those in the BASE scene if possible, then load other scenes like UI and pause and the level itself, etc.
You have to sort of figure out which works for you. You can actually make Start() be a coroutine too, such as looking to find the player spawn position which might not be ready yet:
private bool ready;
IEnumerator Start()
{
ready = false;
while( !ready)
{
// (however you do the following)
PlayerSpawn = SearchForPlayerSpawnPoint();
/// if we find it, then we are ready
if (PlayerSpawn)
{
ready = true;
break;
}
yield return null;
}
}
void Update()
{
if (!ready)
{
return;
}
// do your normal update stuff here...
}