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;//值设置为真可以跳转下一个场景
            }
            
        }
    }
}

 

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信