游戏进度条Slider代码就是_Image.png.Image

游戏进度条Slider代码就是_Image.png.Image

游戏进度条滑块

这也是我们经常用到的一个组件,拖动条,我们可以用它来制作进度条,血条,调节音量3D植物,下面就来介绍一下它的核心组件

粘贴图片.png

粘贴图片.png

可以看到我在Split下面添加了2个Sprites和一个Label,分别是前后背景照片unity 加载进度条,另外一个是显示当前进度的Label。 这张图和上图对比一下就知道了。

粘贴图片.png

这是创建的进度条。

异步加载 SceneManager.LoadSceneAsync

当我们需要加载下一个场景时,我们往往会使用异步加载。 异步加载是指在不阻塞主线程的情况下加载场景。 如果我们直接跳转,有时候场景很大,我们需要一段时间才能跳转到下一个场景才加载满,这会导致播放不流畅。

粘贴图片.png

这里的第二行代码是让它加载完成后不显示,然后在我们要显示的时候设置为True。 上图中的next还有一个progress属性,表示当前加载的进度。 我们将在下面使用它。

现在我们很多游戏的进度条都是假的unity 加载进度条,一般都是前端和后端都是假的,只有中间是真的UI界面,(商家这时候可以宣传一些活动,让我们仔细看看)。代码

粘贴图片.png

 void StartJDT()
{
    //刚开始我的进度条是隐藏的,执行这个方法,让进度条显示出来
    JDTPanel.SetActive(true);
    //开启协程,让他去执行进度条加载,0.55f是进度条第一次的目标值为55%
    StartCoroutine("St", 0.55f);
}
IEnumerator St(float tar)
{
    //当进度条没有到达tar点位的时候,他就会进入到下边的循环
    while (!IsEnd)
    {
        JDT.GetComponent().value = Mathf.MoveTowards(JDT.GetComponent().value, tar, Random.Range(0.001f, 0.05f));
        if (JDT.GetComponent().value >= tar) { IsEnd = true; }
        yield return new WaitForSeconds(Random.Range(0f, 0.2f));
   
    }
}
void Update()
{
    if (IsEnd)
    {
        
        if (next.progress<0.9f)
        {
            //当异步场景资源没有加载加载完毕的时候,一般都是当progress为90%的时候就是加载完毕了
            JDT.GetComponent().value = 0.55f + next.progress * 0.2f;
        }
        else
        {
            //当异步场景资源加载加载完毕的时候,我在开启协程,然后让进度条的目标位置为1
            IsEnd = false;
            StartCoroutine("St", 1f);
        }
    }
    //当进度条进度为100%的时候,让异步加载进来的场景显示
    if (JDT.GetComponent().value == 1)
    {
        next.allowSceneActivation = true;
    }
}

若水GIF截图_2016年12月17日15:46:37.gif

这是他展示的

粘贴图片.png

这是整个过程