关闭

Unity异步加载场景loading条

标签: unityC#异步
294人阅读 评论(0) 收藏 举报
using UnityEngine;
using System.Collections;

public class LoadingScene : MonoBehaviour 
{
    public UISlider processBar;
    private AsyncOperation async;
    private uint _nowprocess;
    // Use this for initialization
    void Start () 
    {
        _nowprocess = 0;
        StartCoroutine(loadScene());
    }
    IEnumerator loadScene()
    {
        //异步读取场景。
        //Globe.loadName 就是A场景中需要读取的C场景名称。
        async = Application.LoadLevelAsync(GlobalVaule.LoadLevelName);
        async.allowSceneActivation = false;
         //读取完毕后返回, 系统会自动进入C场景
         yield return async;
        
    }
    void Update()
    {
        if(async == null)
        {
            return;
        }


        uint toProcess;
        Debug.Log(async.progress * 100);
        if(async.progress < 0.9f)//坑爹的progress,最多到0.9f
        {
              toProcess = (uint)(async.progress * 100);
        }
        else
        {
             toProcess = 100;
        }


        if(_nowprocess < toProcess)
        {
            _nowprocess++;
        }


        processBar.value = _nowprocess/100f;


        if (_nowprocess == 100)//async.isDone应该是在场景被激活时才为true
        {
            async.allowSceneActivation = true;
        }
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:51089次
    • 积分:701
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:9篇
    • 译文:0篇
    • 评论:11条
    最新评论