UNITY之进度条加载场景

using UnityEngine;
using System.Collections;

public class LoadingTest : MonoBehaviour {


    public UIProgressBar progress;

    // Use this for initialization
    void Start () {
    
        StartCoroutine (StartLoading_2());
    }
    
    // Update is called once per frame
    void Update () {
    
    }
        

    IEnumerator StartLoading_1(){
        AsyncOperation op = Application.LoadLevelAsync ("Scene05");
        while(!op.isDone){
            //
            setProgress (op.progress*100);
            yield return new WaitForEndOfFrame();
        }
    }


    IEnumerator StartLoading_2(){
        AsyncOperation op=Application.LoadLevelAsync("Scene05");
        op.allowSceneActivation=false;
        while(op.progress<0.9f){
            //
            setProgress (op.progress*100);
            yield return new WaitForEndOfFrame();
        }
    }

    IEnumerator StartLoading_3(){
        AsyncOperation op=Application.LoadLevelAsync("Scene05");
        op.allowSceneActivation=false;
        while(op.progress<0.9f){
            //
            setProgress (op.progress*100);
            yield return new WaitForEndOfFrame();
        }
        setProgress (100);
        //
        yield return new WaitForEndOfFrame();
        op.allowSceneActivation=true;
    }

    IEnumerator StartLoading_4(){
    

    
        int displayProgress=0;
        int toProgress=0;
        AsyncOperation op=Application.LoadLevelAsync("Scene05");
        op.allowSceneActivation=false;
        while(op.progress<0.9f){
            toProgress=(int)(op.progress*100);
            while(displayProgress<toProgress){
                ++displayProgress;
                //
                setProgress((float)displayProgress);
                yield return new WaitForEndOfFrame();
            }
        }

        //当op为0.9时,如果allowSceneActivation为true则直接跳转,取不到0.9后面的值,
        //所以这里先将allowSceneActivation设为false,当op.progress为0.9时,将toProgress=100,
        //运行滚动条值的累加,直到为100时,才去激活allowSceneActivation,进行场景跳转

        toProgress=100;
        while(displayProgress<toProgress){
            ++displayProgress;
            //
            setProgress((float)displayProgress);
            yield return new WaitForEndOfFrame();
        }
        op.allowSceneActivation=true;
    }
    void setProgress(float _value){
        progress.value=_value/100;
    }
}

你可能感兴趣的:(UNITY之进度条加载场景)