Показать сообщение отдельно
Старый 19.09.2010, 16:13   #26
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Пожелания на новые уроки

Как выздоровлю и найду время, будет вам урок. Но самый простой пример вот такой:
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 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;
    }

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
ANIK123 (29.11.2010), IGR (20.09.2010)