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 }

实际载入效果:

*** |  以上内容仅为学习参考、学习笔记使用  | ***

原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13358797.html