制作進度條所需的資源:
用以載入進度條顯示的場景
進度條背景以及進度條本身(顏色區別)
展示百分制進度情況的Text文本
需要載入的場景(這里使用的是自帶場景)
載入時的場景布局:要將 Load 的 Image Type 修改為 Filled,Fill Method 修改為 Horizontal
具體代碼如下:
1 using System.Collections; 2 using UnityEngine; 3 using UnityEngine.SceneManagement; 4 using UnityEngine.UI; 5 6 public class Slider : MonoBehaviour 7 { 8 private AsyncOperation aync; 9 public Image load; // 進度條的圖片 10 private int culload = 0; // 已加載的進度 11 public Text loadtext; // 百分制顯示進度 12 13 void Start() 14 { 15 StartCoroutine("LoadScence"); 16 } 17 18 // 定義一個迭代器,每一幀返回一次當前的載入進度,同時關閉自動的場景跳轉 19 // 因為LoadScenceAsync每幀加載一部分游戲資源,每次返回一個有跨越幅度的progress進度值 20 // 當游戲資源加載完畢后,LoadScenceAsync會自動跳轉場景,所以並不會顯示進度條達到了100% 21 // 關閉自動場景跳轉后,LoadSceneAsync只能加載90%的場景資源,剩下的10%場景資源要在開啟自動場景跳轉后才加載 22 IEnumerator LoadScence() 23 { 24 aync = SceneManager.LoadSceneAsync("SampleScene");//SkillCD為要跳轉的場景 25 aync.allowSceneActivation = false; 26 yield return aync; 27 } 28 29 void Update() 30 { 31 // 判斷是否有場景正在加載 32 if (aync == null) 33 { 34 return; 35 } 36 int progrssvalue = 0; 37 // 當場景加載進度在90%以下時,將數值以整數百分制呈現,當資源加載到90%時就將百分制進度設置為100, 38 if (aync.progress < 0.9f) 39 { 40 progrssvalue = (int)aync.progress * 100; 41 } 42 else 43 { 44 progrssvalue = 100; 45 } 46 // 每幀對進度條的圖片和Text百分制數據進行更改,為了實現數字的累加而不是跨越 47 if (culload < progrssvalue) 48 { 49 culload++; 50 load.fillAmount = culload / 100f; 51 loadtext.text = culload.ToString() + "%"; 52 } 53 // 一旦進度到達100時,開啟自動場景跳轉,LoadSceneAsync會加載完剩下的10%的場景資源 54 if (culload == 100) 55 { 56 aync.allowSceneActivation = true; 57 } 58 } 59 }
實際載入效果:
*** | 以上內容僅為學習參考、學習筆記使用 | ***