您的位置:首页 > 移动开发 > Unity3D

Unity3d异步加载进度条

2016-12-20 14:11 459 查看
using UnityEngine;

using System.Collections;

using UnityEngine.SceneManagement;

using UnityEngine.UI;

public class LoadingTest : MonoBehaviour {

    public Transform m_LoadingPanel; //加载面板

    private AsyncOperation async; //异步加载

    private bool m_isOnceLoad = false;//只进行一次携程,利用携程进行加载

    private int m_ProgerssNum;   //进程数字

    private int m_TempProgress;  

    public GameObject m_StartButton;
// Use this for initialization
void Start () {

        m_StartButton.SetActive(false);

    }

// Update is called once per frame
void Update () {   

        if (!m_isOnceLoad)

        {

            StartCoroutine(loading());

            m_isOnceLoad = true;

        }

        m_TempProgress =(int)( async.progress * 100);   //获取异步加载进程的数据   

        if (m_TempProgress>88) m_TempProgress= 100;

      

        if (m_ProgerssNum < m_TempProgress)

        {

            m_LoadingPanel.GetChild(0).localScale = new Vector3(m_ProgerssNum/100,1,1);

            m_LoadingPanel.GetChild(1).GetComponent<Text>().text = m_ProgerssNum.ToString()+"%";

            m_ProgerssNum++;

            if (m_ProgerssNum == 100)

            {

                m_StartButton.SetActive(true);

                Destroy(m_LoadingPanel.gameObject);

            }

        }      
}

    IEnumerator    loading()

    {

        async = SceneManager.LoadSceneAsync("Test"); //获取引用

        async.allowSceneActivation = false;//不允许屏幕激活,这里我也不知道是什么

        yield return async;       

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: