代码改变世界

异步加载场景和Loading进度条制作

2015-09-20 15:55  公子沐沐  阅读(487)  评论(0编辑  收藏  举报

在切换场景的时候,直接 用 application.LoadLevel()这个方法,如果加载的场景资源过多的话,会卡死一段时间的.

所以,用一个过渡的场景的话,体验会好一点.

那么就先开始做一个过渡的场景(名字叫做:Loading)吧..(比如像下面酱紫,百度的一张图片)

过渡的场景

要切换场景的时候,Application.LoadLevel("Loading");就先切换到这个Loading场景,Loading场景资源少,就一个背景图和一个slider,所以,直接同步加载过来也很快的

然后,在Loading场景里写上这个脚本.

 

 1 public class Loading : MonoBehaviour
 2 {
 3     AsyncOperation asyncOperation;    //异步变量
 4     public GameObject slider;          //进度条
 5     public GameObject Text;                //进度条上的文本
 6     //对以上变量进行初始化
 7     void Start()
 8     {
 9         Text.GetComponent<Text>().text = "0";
10         progress.GetComponent<Image>().fillAmount = 0f;
11         DontDestroyOnLoad(gameObject);
12         StartCoroutine(loadScene()); //开启异步任务,进入loadScene方法
13     }
14     void Update()
15     {
16         Text.GetComponent<Text>().text = (float)asyncOperation.progress * 100 + 10 + "%"; //文本更新异步进度
17         progress.GetComponent<Image>().fillAmount = (float)asyncOperation.progress + .1f;//进度条更新异步进度
18     }
19     IEnumerator loadScene()
20     {
21         yield return asyncOperation = Application.LoadLevelAsync(2);//读取完毕自动进入下一个场景
22     }
23 
24 }