前言:
玩游戲最討厭的是什么呢?當然是游戲加載界面啦
- 但是你知道嗎,加載界面在游戲制作中是不可或缺的,它可以使我們的場景完全加載完畢后再進入游戲,確保用戶不會出現加載卡頓的情況,
如何實作一個簡易的加載界面呢?來跟我學習一下吧
效果圖

UI創建:
首先創建一個開始界面,為Button按鈕添加事件來完成場景的轉換:

然后創建一個加載界面的UI,首先需要的呢就是一個游戲進度條,可以直接使用Slider來完成創建,其UI層級關系為:

其元素作用為:
Background:即整個進度條的背景為棕色Fill:是加載過的進度條的填充,為藍色區域Hander:是中間的白色方塊,為加載臨界點
上面三個元素都可以通過修改其上面的Image組件完成對形狀的修改,而
Hander的位置則是通過Slider上的介面Value來完成的,同樣我們在腳本中可以呼叫其API:
其次呢,需要為加載界面添加一個Text 文本框,來輸出加載百分比
異步加載腳本撰寫:
實作異步場景加載需要通過AsyncOperation來完成,查閱官方檔案,可以發現AsyncOperation是一個類,其基本屬性有如下幾種(加黑為本次使用):
allowSceneActivation:加載完成后,是否允許場景跳轉isDone:場景是否加載完成priority:可以調整異步加載的優先級progress:場景加載進度,數值為從0到1
我們知道場景的直接轉換是通過SceneManager.LoadScene()來直接跳轉完成的,而對于異步加載而言場景的跳轉是通過SceneManager.LoadSceneAsync()來完成的,
兩者區別:
查看Unity官方手冊
而為了在場景沒有加載完之前,就不進行場景跳轉,需要使用協程來控制其轉換:
public GameObject image; //加載界面
public Slider slider; //進度條
public Text text; //加載進度文本
public void LoadNextLeaver()
{
image.SetActive(true);
StartCoroutine(LoadLeaver());
}
IEnumerator LoadLeaver()
{
AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1); //獲取當前場景并加一
//operation.allowSceneActivation = false;
while(!operation.isDone) //當場景沒有加載完畢
{
slider.value = operation.progress; //進度條與場景加載進度對應
text.text = (operation.progress * 100).ToString()+"%";
yield return null;
}
}
完成,求三連!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232100.html
標籤:其他

