首先,创建Canvas,在Canvas中创建一个Button和一个Panel
Button:点击之后进入场景加载
Panel:场景加载面板
其次,在panel当中,我们在创建slider和Text
Text:用来描述进度条的百分比,所以text可有可无,看自己意愿
slider :就是我们的进度条了
Panel建好后,将SetActive设置为false,因为进度条要在点击Button后才会出现
所有gameobject创建好后,我们就可以开始写脚本了。关于进度条的脚本,我习惯创建一个空物体,然后将脚本挂个空物体
关于脚本,我们主要是用到的方法是AsyncOperation,异步协程,先来说一下吗要用到的这个方法中的一些变量
allowSceneActivation,是否在场景加载结束后立即加载场景
isDone,操作是否完成
progress,操作进度,范围在0~1
接下来,就是脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;//UI界面
using UnityEngine.SceneManagement;//场景管理
public class Lo : MonoBehaviour
{
public GameObject loadscene;//进度条加载场景,就是之前创建的Panel
public Text text;//之前创建的Text
public Slider slider;//创建的进度条
public void loadNext() {
StartCoroutine(load());//调用协程
}
IEnumerator load() {
loadscene.SetActive(true);//将Panel打开
//op等于下一个加载的场景,这里不能用LoadScene,因为LoadScene会直接挑跳转到下一个场景,所以用LoadSceneAsync
//SceneManager.GetActiveScene().buildIndex,获得当前的场景的编号在加1,就是下一个场景
AsyncOperation op = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex+1);
op.allowSceneActivation = false;//如果为true,那么加载结束后直接就会跳转,我们根本看不见加载的过程
while (!op.isDone) {//如果操作没有结束
slider.value = op.progress;//将操作进度的值赋给slider
text.text = op.progress * 100 + "%";//表示百分数
//op.allowSceneActivation = false后,op.progress最多等于0.9,所以想要到1,我们要自己设置
if (op.progress >= 0.9f)
{
slider.value = 1;
text.text = "输入任意按键";//输入任意键,跳转到下一场景
if (Input.anyKeyDown)
{
op.allowSceneActivation = true;
}
}
yield return null;
}
}
}