当前位置:   article > 正文

Unity场景异步平滑加载(带滑动条)_unity进度条slider平滑问题

unity进度条slider平滑问题

参考博文
上述博文中,第四种场景异步平滑加载的方法中存在两个问题,具体说明和解决办法如下

public class Loading : MonoBehaviour
{

    public Slider slider;
    public Text text;
    
    void Start()
    {
        StartCoroutine(LoadScene());
    }

    /*
     * 上文第四种方法的代码中,存在两个问题,具体说明如下
     */
    IEnumerator LoadScene()
    {
        int displayProgress=0;
        int targetProgress=0;
        AsyncOperation op = SceneManager.LoadSceneAsync(2);
        op.allowSceneActivation = false;
        //问题1:协程的第一帧时,op.progress的值为0,此时上述链接代码中内部循环不会走,会一直走外部循环(大概走个十几次),直到这一帧结束;
        //解决办法A:我倾向于在内部循环中把比较运算符从“<”改为“<=”,还有一种是在外部循环的末尾加上yield return null;
        while (op.progress<0.9f)
        {
            Debug.Log("当前op.progress=" + op.progress);
            //问题2:上文中为(int)op.progress * 100,此时先向下取整转int,再乘以100。而op.progress的取值范围是[0,0.9)
            //解决办法;如下所示
            targetProgress = (int)(op.progress * 100);
            while (displayProgress<= targetProgress)
            {                
                SetCurrentProgress(displayProgress);
                displayProgress++;
                yield return null;
            } 
            //解决方法B,加上yield return null;                                  
        }        
        targetProgress = 100;
        while (displayProgress <targetProgress)
        {
            //注意一下代码顺序,这样写UI中显示displayProgress能到100
            displayProgress++;
            SetCurrentProgress(displayProgress);
            yield return null;
        }
        op.allowSceneActivation = true;
    }

    private void SetCurrentProgress(int progress)
    {
        text.text = progress + "%";
        slider.value = progress / 100f;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/114220
推荐阅读
相关标签
  

闽ICP备14008679号