• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

常州手游-UGUI异步加载场景进度条

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0326/426.html

UGUI异步加载场景进度条


 

游戏开发运营一个场景进入到另外一个场景中,通常的做法是运用异步加载的方式来完成,为了优化玩家的体验,会在第一个场景中制造参加进度条显现加载进度。下面就来看看异步加载场景进度条的制造。

直接上代码,需求留意几个API就能够了。
usingUnityEngine.SceneManagement;//运用场景管理空间
AsyncOperationprog=SceneManager.LoadSceneAsync(“scene”);//新的异步加载场景API,返回异步参数
AsyncOperation.progress//获取进度(我常州手游开发测试了一下最大是0.9,可能要真正跳到场景才是1)
AsyncOperation.allowSceneActivation////假如加载完成,能否立即进入场景
 
代码如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Load : MonoBehaviour {
    public Slider progressUI;
    public Text  progressValue;
    private AsyncOperation prog;
    void Start() {
        prog = SceneManager.LoadSceneAsync("scene");  //异步加载场景
        StartCoroutine(LoadingScene());                 
    }
    //设置滑动条
    private void setProgressValue(int value) {
        progressUI.value = value;
        progressValue.text = value + "%";
    }
    private IEnumerator LoadingScene() 
    {
        prog.allowSceneActivation = false;  //假如加载完成,也不进入场景
        int toProgress = 0;         
        int showProgress = 0;
        //测试了一下,进度最大就是0.9
        while (prog.progress < 0.9f) 
        {
            toProgress = (int)(prog.progress * 100);
            while ( showProgress<toProgress)
            {
                showProgress++;
                setProgressValue(showProgress);
                yield return new WaitForEndOfFrame(); //等候一帧
            }
        }
        //计算0.9---1   其实常州游戏开发培训0.9就是加载好了,我估量真正进入到场景是1  
        toProgress = 100;                  
        while (showProgress < toProgress )
        {
            showProgress++;
            setProgressValue(showProgress);
            yield return new WaitForEndOfFrame(); //等候一帧
        }
        prog.allowSceneActivation = true;  //假如加载完成,能够进入场景
    }
置信大家关于异步加载场景进度条的完成曾经都控制了,假如大家正在做的项目有碰到,就能够用上哦。
 
 
 


上篇:上一篇:u3d圆径模糊效果shader
下篇:下一篇:常州手游开发-UGUI做小地图