(转)Unity实现加载场景进度条

来源:互联网 发布:wp8.1软件下载 编辑:程序博客网 时间:2024/05/18 09:16
using UnityEngine;  using System.Collections;    public class Scene2 : MonoBehaviour {      //异步对象      AsyncOperation asyncOperation;      void Start () {          DontDestroyOnLoad(gameObject);      }        void OnGUI(){          //开始加载场景按钮          if(GUILayout.Button("Start Load Scene")){              StartCoroutine("loadScene","Bootcamp");          }            //判断异步对象并且异步对象没有加载完毕,显示进度          if(asyncOperation!=null&&!asyncOperation.isDone){              GUILayout.Label("progress:"+(float)asyncOperation.progress*100+"%");          }      }        IEnumerator loadScene(string sceneName){          yield return asyncOperation = Application.LoadLevelAsync(sceneName);          print("load Complete!");      }  } 



至于有些人说最后当进度加载完毕之后没有打印load Complete! ,是因为没有加上DontDestroyOnLoad(gameObject);这句话,因为当下一个场景加载完毕之后,上一个场景中的显示进度这个物体已经被销毁了,因此我们要把这个物体标记为不销毁,就可以在加载完成后做一些其他的事情。

当然也可以通过MonoBehaviour.OnLevelWasLoaded(int level)回调方法来监听场景加载完毕。

 
0 0