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;
}
}
}