异步加载

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Loading : MonoBehaviour
{
    public Slider processBar;
    private AsyncOperation async;

    private int nowProcess;
    public Text _text;

    void Start()
    {
        StartCoroutine(loadScene());
    }
    /// <summary>  
    /// 加载完场景后就会跳转  
    /// </summary>  
    /// <returns></returns>  
    IEnumerator loadScene()
    {
        async = SceneManager.LoadSceneAsync("123");
        async.allowSceneActivation = false;
        yield return new WaitForEndOfFrame();
    }

    void Update()
    {
        if (async == null)
        {
            return;
        }

        int toProcess;
        // async.progress 你正在读取的场景的进度值  0---0.9    
        // 如果当前的进度小于0.9,说明它还没有加载完成,就说明进度条还需要移动    
        // 如果,场景的数据加载完毕,async.progress 的值就会等于0.9  
        if (async.progress < 0.9f)
        {
            toProcess = (int)async.progress * 100;
        }
        else
        {
            toProcess = 100;
        }
        // 如果滑动条的当前进度,小于,当前加载场景的方法返回的进度   
        if (nowProcess < toProcess)
        {
            nowProcess++;
        }

        processBar.value = nowProcess / 100f;
        _text.text = nowProcess.ToString() + "%";
        // 设置为true的时候,如果场景数据加载完毕,就可以自动跳转场景   
        if (nowProcess == 100)
        {
            async.allowSceneActivation = true;

        }

    }
}
个人学习收藏,不做他用

猜你喜欢

转载自blog.csdn.net/wxd444725262/article/details/78180345
今日推荐