What is the correct method to load a large level

Hello guys and thanks for the interest.

I have the following in my project:

  • a small scene (the main menu)
  • a very large scene (3 hours worth of content made by prefabs, no terrain)

What I want to achieve:

  • have a loading screen between these two
  • load the very large scene by using one of the two methods (Application.LoadLevelAdditiveAsync or Application.LoadLevelAsync)
  1. Which of these options allows me to give the impression that the loading time was very small for the player (basically have the loading screen appear for a little time).

  2. Which is best? Have the big scene loaded in one go or there is a way to load it piece by piece as the player advances through it?

  3. The loading screen should be in a separate micro scene or it should be in the the small scene (main menu)?

Please excuse me for all the questions, but it’s important to obtain the correct method of loading large scenes.

Thank you!

Ok, I add this as a response to my question. After consideration and testing, I will go with the LoadLevelAsync as it seems to suit my needs perfectly (0 seconds waiting time when loading the big level). Maybe I will switch to LoadLevelAdditiveAsync if it becomes too large.

Here is the script for loading the BIG_LEVEL:

  public string levelName;
    AsyncOperation async;
     
    public void StartLoading() {
    StartCoroutine("load");
    }
     
    IEnumerator load() {
    Debug.LogWarning("ASYNC LOAD STARTED - " +
    "DO NOT EXIT PLAY MODE UNTIL SCENE LOADS... UNITY WILL CRASH");
    async = Application.LoadLevelAsync("BIG_LEVEL");
    async.allowSceneActivation = false;
    yield return async;
    }
     
    public void ActivateScene() {
    async.allowSceneActivation = true;
    }