【Unity】场景异步加载的进度条制作

 1 using UnityEngine;
 2 using System.Collections;
 3 using UnityEngine.UI;
 4 /// <summary>
 5 /// 脚本位置:Main Camera
 6 /// 脚本功能:场景异步加载的进度条显示
 7 /// </summary>
 8 public class LoadingScene : MonoBehaviour
 9 {
10  
11     // 滑动条
12     public Slider processBar;
13  
14     // Application.LoadLevelAsync()这个方法的返回值类型是AsyncOperation
15     private AsyncOperation async;
16  
17     // 当前进度,控制滑动条的百分比
18     private uint nowprocess = 0;
19  
20  
21     void Start ()
22     {
23         // 开启一个协程
24         StartCoroutine (loadScene ());
25     }
26  
27     // 定义一个协程
28     IEnumerator loadScene ()
29     {
30         // 异步读取场景
31         // 指定需要加载的场景名
32         async = Application.LoadLevelAsync ("需要加载的场景名字或者index");
33  
34         // 设置加载完成后不能自动跳转场景
35         async.allowSceneActivation = false;
36  
37         // 下载完成后返回async
38         yield return async;
39         
40     }
41  
42     void Update ()
43     {
44         // 判断是否加载完需要跳转的场景数据
45         if (async == null) {
46             // 如果没加载完,就跳出update方法,不继续执行return下面的代码
47             return;
48         }
49  
50         // 进度条需要到达的进度值
51         uint toProcess;
52         Debug.Log (async.progress * 100);
53  
54         // async.progress 你正在读取的场景的进度值  0---0.9
55         // 如果当前的进度小于0.9,说明它还没有加载完成,就说明进度条还需要移动
56         // 如果,场景的数据加载完毕,async.progress 的值就会等于0.9
57         if (async.progress < 0.9f) {
58             //  进度值
59             toProcess = (uint)(async.progress * 100);
60         }
61         // 如果能执行到这个else,说明已经加载完毕
62         else {
63             // 手动设置进度值为100
64             toProcess = 100;
65         }
66  
67         // 如果滑动条的当前进度,小于,当前加载场景的方法返回的进度
68         if (nowprocess < toProcess) {
69             // 当前滑动条的进度加一
70             nowprocess++;
71         }
72  
73         // 设置滑动条的value
74         processBar.value = nowprocess / 100f;
75  
76         // 如果滑动条的值等于100,说明加载完毕
77         if (nowprocess == 100) {
78             // 设置为true的时候,如果场景数据加载完毕,就可以自动跳转场景
79             async.allowSceneActivation = true;
80         }
81     }
82     
83 } 

 

posted @ 2020-07-18 20:00  c_luo2017  阅读(260)  评论(0)    收藏  举报