您好,登錄后才能下訂單哦!
首先說加載場景顯示進度條
簡單的來說需要協程+Update
一直用UGUI,進度條就用Slider
別忘了引用
using UnityEngine.UI;
public Slider slider;
如果想在旁邊顯示個數字百分比,就再加個Text就好了
public Text text;
假設我們所在場景為old,要去往場景new,如何加載并顯示進度呢
可以直接在old場景中做,也可以加一個中間場景專門顯示加載進度
我們就加個中間場景吧,叫middle
而加載的進度條slder和百分比文字text就在此場景中建立
也就是說至少需要三個腳本
一個掛在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面板中
首先把Auto Generate前的勾取消
再點擊 Generate Lighting按鈕
與baked相同,也會在場景文件同級目錄下生成一個同名的文件夾
里面有一個LightingData,一個ReflectionProbe
但與baked不同的是,這個不算是烘焙場景,過程非常快,這樣,以后再在程序運行時加載其場景,就不會進去場景變暗了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。