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;
}
}
我们的场景跳转异步加载就完成了,我用我的作品稍微演示了下,效果如下:
共勉,不断地学习