Unity 简单的进度条实现
制作进度条所需的资源:
用以载入进度条显示的场景
进度条背景以及进度条本身(颜色区别)
展示百分制进度情况的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 }