Страница 1 из 2
Loading Progress Bar
Добавлено:
14 дек 2018, 14:42
Shifu
Здравствуйте, я начал искать информацию для 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 только проверял загрузку уровня и передавал значение на прогресс бар?
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 15:06
Ziza
Можно естественно, вопрос в том, как вы хотите реализовать. События/делегаты, напрямую вызвать метод/задать свойство прогрессбара или может вообще на SendMessage
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 16:27
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 сцена замораживается и прогресс бар не работает
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 16:42
Ziza
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?
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 16:49
Shifu
(Ну это просто крутилка объекта, а не прогресс бар, но не суть)
Дяяя
А при нажатии на кнопку 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
}
}
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 16:53
Ziza
Ну так вы используете SceneManager.LoadScene() а не SceneManager.LoadSceneAsync() само собой все остановится
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 17:22
Shifu
попробовал изменить то на другое, все равно сцена останавливается
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 17:31
1max1
Там возможно замкнутый круг, когда сцена зупускает load, а потом уже другая сцена снова его запускает и так по кругу, но это предположение.
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 17:48
Shifu
на сколько я понимаю такое не может произойти так, как load активируется только по нажатию кнопки start и больше не где не вызывается (хотя я могу и ошибаться)
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 18:04
Shifu
Самое интересное:
переход из главного меню на игровую сцену(долговатый если так можно выразиться, да и останавливается сцена);
а переход из игровой сцены на игровую сцену мгновенный.
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 18:47
Ziza
Не должно такого быть чтобы зависало, подвисания конечно будут - поток то один, но чтобы прям зависло намертво при асинхронной загрузке сцены не должно быть, если уж у вас не совсем слабый комп. Но судя по тому что повторный переход мгновенный - видимо комп в разряд совсем слабых не попадает)
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 19:08
Shifu
Я сейчас заметил оживление главного меню в момент перехода(если точнее в последние м.секунды ) с г.м на игровую сцену (не в Компьютере дело)
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 19:31
1max1
Посмотри в профайлер.
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 21:14
Shifu
на счет профайлера могу сказать, резкие скачки фпс вверх появляются а так относительно стабильный фпс (при старте и просто при работе)
Re: Loading Progress Bar
Добавлено:
14 дек 2018, 21:27
Shifu
а из-за чего может такое происходить ?