My loading screen won't trigger?

I’ve been following this tutorial:

And I think I have everything working-except the trigger. I can't get the loading screen to trigger while the **Play Area** of my game is loading, here is a copy of the script in case someone can see where I've gone wrong:
using System.Collections;
using UnityEngine.SceneManagement;

public class LoadingScreenManager : MonoBehaviour {

	[Header("Loading Visuals")]
	public Image loadingIcon;
	public Image loadingDoneIcon;
	public Text loadingText;
	public Image progressBar;
	public Image fadeOverlay;

	[Header("Timing Settings")]
	public float waitOnLoadEnd = 0.25f;
	public float fadeDuration = 0.25f;

	[Header("Loading Settings")]
	public LoadSceneMode loadSceneMode = LoadSceneMode.Single;
	public ThreadPriority loadThreadPriority;

	// If loading additive, link to the cameras audio listener, to avoid multiple active audio listeners
	public AudioListener audioListener;

	AsyncOperation operation;
	Scene currentScene;

	public static int sceneToLoad = -1;
	// IMPORTANT! This is the build index of your loading scene. You need to change this to match your actual scene index
	static int loadingSceneIndex = 4;

	public static void LoadScene(int levelNum) {				
		Application.backgroundLoadingPriority = ThreadPriority.High;
		sceneToLoad = levelNum;

	void Start() {
		if (sceneToLoad < 0)

		fadeOverlay.gameObject.SetActive(true); // Making sure it's on so that we can crossfade Alpha
		currentScene = SceneManager.GetActiveScene();

	private IEnumerator LoadAsync(int levelNum) {

		yield return null; 


		float lastProgress = 0f;

		// operation does not auto-activate scene, so it's stuck at 0.9
		while (DoneLoading() == false) {
			yield return null;

			if (Mathf.Approximately(operation.progress, lastProgress) == false) {
				progressBar.fillAmount = operation.progress;
				lastProgress = operation.progress;

		if (loadSceneMode == LoadSceneMode.Additive)
			audioListener.enabled = false;


		yield return new WaitForSeconds(waitOnLoadEnd);


		yield return new WaitForSeconds(fadeDuration);

		if (loadSceneMode == LoadSceneMode.Additive)
			operation.allowSceneActivation = true;

	private void StartOperation(int levelNum) {
		Application.backgroundLoadingPriority = loadThreadPriority;
		operation = SceneManager.LoadSceneAsync(levelNum, loadSceneMode);

		if (loadSceneMode == LoadSceneMode.Single)
			operation.allowSceneActivation = false;

	private bool DoneLoading() {
		return (loadSceneMode == LoadSceneMode.Additive && operation.isDone) || (loadSceneMode == LoadSceneMode.Single && operation.progress >= 0.9f); 

	void FadeIn() {
		fadeOverlay.CrossFadeAlpha(0, fadeDuration, true);

	void FadeOut() {
		fadeOverlay.CrossFadeAlpha(1, fadeDuration, true);

	void ShowLoadingVisuals() {

		progressBar.fillAmount = 0f;
		loadingText.text = "LOADING...";

	void ShowCompletionVisuals() {

		progressBar.fillAmount = 1f;
		loadingText.text = "LOADING DONE";


I can’t get it to trigger but if anyone can help me, I would greatly appreciate it :slight_smile:

I found out what it was, you need to create a second script (like the one he shows in the video) and then add it.

Detailed Unity3D Actual Loading Screen Tutorial (With free C# Script and Demo project)

Or watch it on Youtube