Unity场景跳转异步加载

Unity场景的异步加载

我们可以想成三个场景A,B,C,我们从A跳转到C,B场景作为一个过度(含加载进度条),这样使场景的跳转不会显得很突兀。

1.场景A代码的编写

    void ButtonClick()
    {
        start_Button.onClick.AddListener(delegate
        {
            SceneManager.LoadScene("LoadScene");              //LoadScene为场景B的名称
        });
    }

2.场景B代码的编写

public class LoadScene : MonoBehaviour
{
    public Slider slider;                   //加载进度条
    private AsyncOperation mAsyncOperation; //异步加载信息
    void Start()
    {
        StartCoroutine(LoadSceneFunction());
    }

    void Update()
    {
        UpdateSlider();
    }
    /// <summary>
    /// 异步加载场景
    /// </summary>
    /// <returns></returns>
    IEnumerator LoadSceneFunction()
    {
        mAsyncOperation = SceneManager.LoadSceneAsync("ChooseScene");       //ChooseScene为场景C的名称
        //不跳转场景,停留在当前场景
        mAsyncOperation.allowSceneActivation = false;
        yield return mAsyncOperation;
    }

    void UpdateSlider()
    {
        if (slider.value >= 1)
        {
            //跳转目标场景
            mAsyncOperation.allowSceneActivation = true;
            return;
        }
        else if (slider.value >= 0.9f)
        {
            slider.value += Time.deltaTime;
            return;
        }
        //场景加载进度,显示最大值为0.9f
        slider.value = mAsyncOperation.progress;
    }
}

我们的场景跳转异步加载就完成了,我用我的作品稍微演示了下,效果如下:
在这里插入图片描述
共勉,不断地学习

猜你喜欢

转载自blog.csdn.net/qq_37176118/article/details/86262193