将要加载的场景全都导入Bulid Settings,跳过此步会报错
编写LevelManager脚本,实现Loading转场效果
static string nextLevel;//转场后的下一个场景
AsyncOperation asyn;
public Slider slider;
public Text text;
private float tempProgress;
private void Start()
{
tempProgress = 0;
if (SceneManager.GetActiveScene().name=="Loading")//如果当前活跃场景是Loading,异步加载下一个场景
{
asyn = SceneManager.LoadSceneAsync(nextLevel);
asyn.allowSceneActivation = false;//把allowSceneActivation设置为false后,Unity就只会加载场景到90%,剩下的10%要等到allowSceneActivation设置为true后才加载
}
}
public void LoadLoadingLevel(string nextLevelName)//加载Loading界面,并传入下一个场景名
{
nextLevel = nextLevelName;
SceneManager.LoadScene("Loading");
}
private void Update()
{
if(text&&slider)
{
//更新Loading进度条和加载数字
tempProgress = Mathf.Lerp(tempProgress, asyn.progress, Time.deltaTime);
text.text = ((int)(tempProgress / 9 * 10 * 100)).ToString() + "%";
slider.value = tempProgress / 9 * 10;
if (slider.value>=0.99)
{
tempProgress = 1;
text.text = 100 + "%";
slider.value = 100 / 9 * 10;
asyn.allowSceneActivation = true;
}
}
}
脚本参数设置好后,在Button中调用