Loading Screen is the central component of Evo Loader. It manages the entire transition lifecycle: fading in, loading the target scene asynchronously in the background, cycling hints and backgrounds, optionally waiting for player input, and finally fading out and destroying itself.
The component lives on a prefab that is instantiated at runtime when a load is triggered. It is never placed directly in a scene.
The fastest way to get started is to duplicate one of the provided presets found at: Evo Loader -> Prefabs -> Loading Screens
Pick the one closest to what you need, duplicate it, and customize the copy. All references are already wired up so you can focus on visual changes rather than setup.
Extra delay before the inner content group fades in. Smooths the overall entry transition.
minimumDisplayTime
float
Minimum time (realtime seconds) the loading screen stays visible, even if the scene loads instantly.
afterLoadDelay
float
Additional wait time after the scene activates, before the loading screen fades out.
startLoadAfterContentFade
bool
When enabled, the scene load begins only after the content has fully faded in. Default is false — load starts immediately after the main canvas fades in.
Tasks let you pause the loading screen until your own async operations complete — for example, fetching player data before activating the new scene.
TaskExample.cs
using Evo.Loader;using UnityEngine;using System.Collections;public class TaskExample : MonoBehaviour{ public LoadingScreen loaderPrefab; public void StartLoad() { LoadParameters parameters = new() { targetScene = "GameScene", loadingScreen = loaderPrefab }; // Register a callback once the loading screen exists parameters.onLoadStart.AddListener(RegisterTasks); // Then load the scene LoadingScreen.LoadScene(parameters); } void RegisterTasks() { LoadingScreen instance = LoadingScreen.GetInstance(); instance.AddTask("fetch-data", "Fetching player data..."); StartCoroutine(FetchDataCoroutine()); } IEnumerator FetchDataCoroutine() { // Simulate an async operation yield return new WaitForSeconds(2f); // Mark the task complete — the loader will now proceed LoadingScreen.GetInstance().CompleteTask("fetch-data"); }}
using Evo.Loader;using UnityEngine;using System.Collections;public class LoadingScreenExample : MonoBehaviour{ [Header("Prefab References")] public LoadingScreen defaultLoader; public LoadingScreen bossLoader; // Basic load public void LoadMainMenu() { // Direct prefab reference — works from anywhere LoadingScreen.LoadScene("MainMenu", defaultLoader); // Without a reference // Uses the default screen from the config asset (Evo Loader/Resources/EvoDefaultConfig.asset) LoadingScreen.LoadScene("MainMenu"); } // Advanced load public void LoadBossArena() { LoadParameters parameters = new() { targetScene = "BossArena", loadingScreen = bossLoader, loadMode = LoadMode.Single, useEmptySceneBuffer = true // flush memory between heavy scenes }; parameters.onLoadStart.AddListener(() => Debug.Log("Entering boss area...")); parameters.onLoadComplete.AddListener(() => Debug.Log("Arena ready!")); LoadingScreen.LoadScene(parameters); } // Transition only public void ShowSplash() { // Show the loading screen without loading any scene // You can specify minimum display time in your prefab LoadingScreen instance = LoadingScreen.ShowTransition(defaultLoader); } // Load with a task public void LoadWithDataFetch() { LoadParameters parameters = new() { targetScene = "GameScene", loadingScreen = defaultLoader }; parameters.onLoadStart.AddListener(() => { LoadingScreen instance = LoadingScreen.GetInstance(); instance.AddTask("fetch-save", "Loading save data..."); StartCoroutine(FetchSaveData()); }); LoadingScreen.LoadScene(parameters); } IEnumerator FetchSaveData() { yield return new WaitForSeconds(1.5f); // simulate async work LoadingScreen.GetInstance().CompleteTask("fetch-save"); }}