Loading Progress Bar

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Loading Progress Bar

Сообщение Shifu 14 дек 2018, 14:42

Здравствуйте, я начал искать информацию для Loading Progress Bar под скрипт загрузки уровня и практически везде я нахожу +- одинаковые скрипты. Где LPB загружает сцену и проверяет на сколько сцена загружена.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ScenesLoad : MonoBehaviour {

    [Header("load scene")]
    public int index;
    [Header("object")]
    public Image loadI;
    public Text Tprogres;

    private void Start()
    {
        StartCoroutine(AsyncLoad());
    }

    IEnumerator AsyncLoad()
    {
        AsyncOperation operator1 = SceneManager.LoadSceneAsync(index);
        while (!operator1.isDone)
        {
            float progress = operator1.progress / 0.9f;
            loadI.fillAmount = progress;
            Tprogres.text = string.Format("{0:0}%", progress * 100);
            yield return null;
        }
    }
}
 

Но можно ли сделать так чтобы LPB только проверял загрузку уровня и передавал значение на прогресс бар?
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Ziza 14 дек 2018, 15:06

Можно естественно, вопрос в том, как вы хотите реализовать. События/делегаты, напрямую вызвать метод/задать свойство прогрессбара или может вообще на SendMessage
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 16:27

Я нашел некий имитатор прогресс бара
Синтаксис:
Используется csharp
using UnityEngine;

public class ProgressCircle : MonoBehaviour
{
    private RectTransform rectTransform;
    private float rotateSpeed = -100f;

    private void Awake()
    {
        rectTransform = GetComponent<RectTransform>();
    }

    private void Update()
    {
        rectTransform.Rotate(0f, 0f, rotateSpeed * Time.deltaTime);
    }
}
 


но почему-то при нажатии на кнопку start сцена замораживается и прогресс бар не работает
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Ziza 14 дек 2018, 16:42

Shifu писал(а):Я нашел некий имитатор прогресс бара
Синтаксис:
Используется csharp
using UnityEngine;

public class ProgressCircle : MonoBehaviour
{
    private RectTransform rectTransform;
    private float rotateSpeed = -100f;

    private void Awake()
    {
        rectTransform = GetComponent<RectTransform>();
    }

    private void Update()
    {
        rectTransform.Rotate(0f, 0f, rotateSpeed * Time.deltaTime);
    }
}
 


но почему-то при нажатии на кнопку start сцена замораживается и прогресс бар не работает

Ну это просто крутилка объекта, а не прогресс бар, но не суть)
А какие действия выполняются при нажатии на кнопку start?
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 16:49

(Ну это просто крутилка объекта, а не прогресс бар, но не суть) :) Дяяя
А при нажатии на кнопку Start запускается элемент скрипта load (извините если я не правильно написал)

Синтаксис:
Используется csharp
public void load()
    {
        if (File.Exists(Application.dataPath + "/saves/save.sv"))
        {
            FileStream FIS = new FileStream(Application.dataPath + "/saves/save.sv", FileMode.Open); //open поток
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            try
            {          
                SaveData data = (SaveData)binaryFormatter.Deserialize(FIS); //Десериалирует
                SceneManager.LoadScene(data.LastScene, LoadSceneMode.Single);                                            
            }
            catch(System.Exception e)
            {
                Debug.Log(e.Message);
            }
            finally
            {
                FIS.Close(); //close файловый поток
            }
        }
        else
        {          
            //Application.Quit();
            SceneManager.LoadScene(1); //load pervoy scene
        }
    }
 
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Ziza 14 дек 2018, 16:53

Ну так вы используете SceneManager.LoadScene() а не SceneManager.LoadSceneAsync() само собой все остановится
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 17:22

попробовал изменить то на другое, все равно сцена останавливается
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение 1max1 14 дек 2018, 17:31

Там возможно замкнутый круг, когда сцена зупускает load, а потом уже другая сцена снова его запускает и так по кругу, но это предположение.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 17:48

на сколько я понимаю такое не может произойти так, как load активируется только по нажатию кнопки start и больше не где не вызывается (хотя я могу и ошибаться)
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 18:04

Самое интересное:
переход из главного меню на игровую сцену(долговатый если так можно выразиться, да и останавливается сцена);
а переход из игровой сцены на игровую сцену мгновенный.
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Ziza 14 дек 2018, 18:47

Не должно такого быть чтобы зависало, подвисания конечно будут - поток то один, но чтобы прям зависло намертво при асинхронной загрузке сцены не должно быть, если уж у вас не совсем слабый комп. Но судя по тому что повторный переход мгновенный - видимо комп в разряд совсем слабых не попадает)
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 19:08

Я сейчас заметил оживление главного меню в момент перехода(если точнее в последние м.секунды ) с г.м на игровую сцену (не в Компьютере дело)
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение 1max1 14 дек 2018, 19:31

Посмотри в профайлер.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 21:14

на счет профайлера могу сказать, резкие скачки фпс вверх появляются а так относительно стабильный фпс (при старте и просто при работе)
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

Re: Loading Progress Bar

Сообщение Shifu 14 дек 2018, 21:27

а из-за чего может такое происходить ?
Аватара пользователя
Shifu
UNец
 
Сообщения: 41
Зарегистрирован: 09 дек 2018, 15:48

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 26