1.新建3个场景
2.在Canavs上加上MyLevelManager脚本,建一个Button,注册点击事件。
3.制作第二个场景需要用到的进度条(记得把Handle Slide
Area删掉)。Text里内容是加载进度数字。同样Canavs上挂上MyLevelManager脚本,记得给Inspector脚本slider和text赋值(拖进去)。
4.第三个场景,随便创建复制了一些Cube,看心情随意整,也可以自己找一些炫酷的大型场景资源。
注意:MyLevelManager脚本需要挂在 01-Begin场景和02-Loding场景 的Canavs上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class MyLevelManager : MonoBehaviour {
static string nextLevel;//静态数据,不销毁
public Slider slider;
public Text text;
public float tempProgress;
AsyncOperation async;
public void LoadLodingLevel(string nextLevelName)
{
SceneManager.LoadScene("02-Loding");
nextLevel = nextLevelName;
}
private void Start()
{
tempProgress = 0;
if (SceneManager.GetActiveScene().name ==
"02-Loding")//如果当前活跃的场景是Loding场景
{
async = SceneManager.LoadSceneAsync(nextLevel);//则异步加载下一个场景
async.allowSceneActivation = false;//当加载完场景时不跳转下一个场景
}
}
private void Update()
{
if(slider && text)
{
tempProgress = Mathf.Lerp(tempProgress, async.progress/9*10,
Time.deltaTime * 2);//平滑加载进度条;async.progress是0~0.999的一个float值
text.text = ((int)(tempProgress/9*10 * 100)).ToString() + "%";
slider.value = async.progress/9*10;
if (tempProgress/9*10 >= 0.9)
{
tempProgress = 1;
text.text = 100+ "%";
slider.value = 1;
async.allowSceneActivation = true;//值设置为真可以跳转下一个场景
}
}
}
}