Ressources

Catégorie scripts.

Le panda anti Adblock

LevelLoader

Script permettant d'afficher le pourcentage de chargement d'une scène
Copier
								
									
// Script issu d'un tutoriel réalisé par TUTO UNITY FR
// https://www.youtube.com/c/tutounityfr

// Ce script vous permet de créer des écrans de chargement lors du passage d'une scène à une autre
// Script basé sur le tutoriel de Alan Zucconi : http://www.alanzucconi.com/2016/03/30/loading-bar-in-unity/

using System.Collections;
using UnityEngine;
// Librairie permettant de gérer les scènes via script
using UnityEngine.SceneManagement;
// Librairie permettant de gérer les éléments UI
using UnityEngine.UI;

public class LevelLoader : MonoBehaviour {

    // Références aux objets
    public GameObject loadingScreen;
    public Slider slider;
    public Text progressText;

    // Fonction de chargement de niveau appelé via un bouton
    public void LoadLevel(int sceneIndex)
    {
		// Démarrage de la coroutine
        StartCoroutine(LoadAsynchronously(sceneIndex));
    }

    // Coroutine permettant de charger la scène et de mettre à jour le UI en fonction de la progression
    IEnumerator LoadAsynchronously(int sceneIndex)
    {
        // Chargement de la scène en background
        // On stock cette ligne dans operation pour accéder au pourcentage de chargement
        AsyncOperation operation = SceneManager.LoadSceneAsync(sceneIndex);

        // Activation de l'écran de chargement
        loadingScreen.SetActive(true);

        // Tant que le chargement n'est pas terminé on lit cette boucle
        while (!operation.isDone)
        {
            // On recupère la progression, Clamp01 bloque la valeur entre 0 et 1
            float progress = Mathf.Clamp01(operation.progress / 0.9f);

            // Attribution de la nouvelle valeur au slider
            slider.value = progress;

			// Mise à jour du pourcentage de chargement
            progressText.text = progress * 100 + "%";

            // On attend un frame puis on recommance la boucle
            yield return null;
        }
    }

}