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)回调方法来监听场景加载完毕。