Как выздоровлю и найду время, будет вам урок. Но самый простой пример вот такой:
using UnityEngine;
public class LoadLevelSplash : MonoBehaviour
{
// имя сцены для загрузки
public string levelNameToLoad;
// состяние асинхронной операции
private AsyncOperation _loader;
public void Awake()
{
// не будем удалять текущий объект после окончания загрузки уровня
// здесь учитывайте то, что при загрузке уровня
// удаляются все объекты предыдущей сцены для которых не вызывна
// функция DontDestroyOnLoad. Следовательно не забудте
// НЕ удалить и текстуры, используемые в методе OnGUI
DontDestroyOnLoad(gameObject);
// начинаем асинхронную загрузку сцены с именем, указанным в levelNameToLoad
// при построени проекта сцена с данным именем должна быть включена в сборку
_loader = Application.LoadLevelAsync(levelNameToLoad);
// Если необходимо, чтобы все объекты сцены при
// загрузке уровня не уничтожились, то нужно использовать
// функцию Application.LoadLevelAdditiveAsync()
}
public void Update()
{
if(_loader.isDone)
{
// уровень загрузился, можно например удалить текущий объект
//Destroy(gameObject);
}
}
public void OnGUI()
{
// здесь отрисовка бэкграунда
if (_loader != null)
{
// отрисовка полосы загрузки
Rect rect = new Rect(
10,
Screen.height / 2 - 20,
(Screen.width - 20) * _loader.progress,
40);
GUI.Label(rect, "", GUI.skin.box);
}
}
// статическая функция загрузки сцены
public static void LoadLevel(string levelName)
{
GameObject levelLoader = new GameObject("LoadLevel_" + levelName);
LoadLevelSplash splash = levelLoader.AddComponent<LoadLevelSplash>();
splash.levelNameToLoad = levelName;
}
}