I decided to modify this Game so that every time you do a task, another tile/part of the level loads and then once all tiles/parts are loaded, you can play the level.
I've made some progress in this.
I used:
while (!clicked)
{
yield return new WaitForSeconds(0.01f);
}
clicked = false;
To make each piece of the level wait for a click until loading the next piece.
(I'm finding it difficult to properly format the code on blogger.)
Then I tried to make the Sound and Player Object wait to load until after the level was loaded, but I've had some difficulty.
First, I thought I would just turn them off in the inspector and then turn them on with a script. It turns out, accessing a deactivated object is difficult in Unity, because most of the easy ways to access an object require the object to be active.
Second, I thought I would try to create a script that had a reference to the Object, and then I could access the reference from the script. I spent a long time trying, but could never get it to work. It might not be possible.
Then I decided to leave the Player Object active and simply toggle the Player Script and and Player SpriteRenderer. This worked on the first level, but after the next level loaded, there was some code that was trying to use the Play Script, but couldn't because it was deactivated.
I'm not yet sure how I will solve this.