异步加载场景和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 }