Загрузка бар сцены в Unity - PullRequest
       27

Загрузка бар сцены в Unity

0 голосов
/ 21 октября 2018

У меня есть 2 сцены в моем проекте Unity.Первая - это сцена загрузки, которая состоит из простого текста и ползунка.А вторая сцена - это случайный генератор 'terrain' (3 различных куба размером 1x1x1).

Время загрузки второй сцены составляет около 15 секунд, но когда я использую метод progress из AsyncOperation, Я получаю только значения 0 или 0,9.

Это мой скрипт для панели загрузки:

IEnumerator LoadingScreen(int level)
{
    button.gameObject.SetActive(false);
    loadingScreenObj.SetActive(true);

    AsyncOperation async = SceneManager.LoadSceneAsync(level);
    async.allowSceneActivation = false;
    Debug.Log(async.progress);

    while(!async.isDone){
        slider.value = async.progress;
        Debug.Log(slider.value);
        if (async.progress >= 0.9f){
            slider.value = 1f;
            async.allowSceneActivation = true;
        }
        yield return null;
    }
}

А скрипт для генератора местности:

public class SpawnInitialFloor : MonoBehaviour {

public GameObject [] prefabs;
private GameObject floor;
List<Vector2> list = new List<Vector2>();
private float y = 0;
private float yWater = -0.1f;
public int maxIterations = 50;
private int max = 1;
private int min = -1;

// Use this for initialization
void Start (){
    setSpawn(); 
}

private void setSpawn()
{
    int r;
    for (int i = 0; i < maxIterations; ++i){
        for (int xIt = min; xIt <= max; ++xIt){
            for (int zIt = min; zIt <= max; ++zIt){
                if (!list.Contains(new Vector2(xIt, zIt))){
                    r = Random.Range(0, 3);
                    if (r == 1)
                        floor = Instantiate(prefabs[r], new Vector3(xIt, yWater, zIt), Quaternion.identity) as GameObject;
                    else
                        floor = Instantiate(prefabs[r], new Vector3(xIt, y, zIt), Quaternion.identity) as GameObject;

                    list.Add(new Vector2(xIt, zIt));
                }
            }
        }
        max += 1;
        min -= 1;
    }
}
}

Строка загрузки всегда выглядит примерно так в течение 15 секунд загрузки другой сцены: Строка загрузки

И до и после полной загрузки второй сцены: До - После

Я хотел знать, нужно ли мне что-то изменить в скрипте SpawnInitialFloor или использовать что-то другое вместо метода прогресса AsyncOperation.

...