Unity帶進度條加載場景及場景變暗的解決方法

首先說加載場景顯示進度條異步

簡單的來講須要協程+Updateide

一直用UGUI,進度條就用Slidercode

別忘了引用協程

using UnityEngine.UI;
public Slider slider;

若是想在旁邊顯示個數字百分比,就再加個Text就行了blog

public Text text;

假設咱們所在場景爲old,要去往場景new,如何加載並顯示進度呢string

能夠直接在old場景中作,也能夠加一箇中間場景專門顯示加載進度it

咱們就加個中間場景吧,叫middleio

而加載的進度條slder和百分比文字text就在此場景中創建class

也就是說至少須要三個腳本date

一個掛在old場景中,一個掛在middle場景中,還有一個腳本負責把場景new的名字從old場景中傳遞至middle場景

首先說傳遞場景名字的腳本

一句話

public class PassSceneName
{
        public static string SceneName;
}

old場景中的腳本兩個動做
1.負責把要打開場景的名字傳給PassSceneName
2.打開middle場景

public void GotoNewScene()
{
        PassSceneName.SceneName="new";
        SceneManager.LoadScene("middle");
}

這樣,在進入middle場景後,能夠經過PassSceneName.SceneName讀取到要加載的場景名

而做爲加載場景,顯然是自動加載,能夠在Start方法中就執行異步加載

public Slider slider;
public Text text;

public float speed = 1.0f;

private AsyncOperation op;

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

Ienumerator loadScene()
{
        slider.value = 0f;
        op=SceneManager.LoadSceneAsync(PassSceneName.SceneName);
        op.allowSceneActivation = false;     //加載完成不自動切換
        yield return op;
}

private void Update()
{
        if(op != null)
        {
                float val = op.progress;
                slider.value = op.progress;
                int persent=(int)(val * 100);
                text.text = persent + "%";

                if(persent == 100)
                {
                        op.allowSceneActivation = true;      //容許加載完成後切換場景
                }
        }
}

如上,slider的值直接等於異步加載的進度值就行了

slider.value = op.progress;

而百分比文字則是進度x100再取整

在進度達到100%以前不容許自動切換場景,達到100%再容許

其實很簡單

再說說加載場景,不亮的問題,也很簡單

首先場景確定用的是實時光設置

那麼在lighting面板中
Unity帶進度條加載場景及場景變暗的解決方法

首先把Auto Generate前的勾取消
Unity帶進度條加載場景及場景變暗的解決方法
再點擊 Generate Lighting按鈕

與baked相同,也會在場景文件同級目錄下生成一個同名的文件夾
Unity帶進度條加載場景及場景變暗的解決方法
裏面有一個LightingData,一個ReflectionProbe

但與baked不一樣的是,這個不算是烘焙場景,過程很是快,這樣,之後再在程序運行時加載其場景,就不會進去場景變暗了

相關文章
相關標籤/搜索