Unity制作场景加载进度条(异步场景加载)

一、创建加载UI

  1. 新建Panel,颜色调成深灰色,不透明度255

  2. Panel下新建Slider,调整Slider;Panel下新建Text,显示进度条百分比

  3. 新建empty GameObject,命名为LoadManagerGameObject

  4. 新建脚本LoadManager.cs,将脚本拖拽放到LoadManagerGameObject上,
    Unity制作场景加载进度条(异步场景加载)_第1张图片

  5. 将Panel的enabled取消勾选
    Unity制作场景加载进度条(异步场景加载)_第2张图片

  6. 新建Button,命名为下一关;OnClick()点击+,将Hierarchy中的LoadManagerGameObject拖拽到Object上,函数选择LoadNextLevel()
    Unity制作场景加载进度条(异步场景加载)_第3张图片
    Unity制作场景加载进度条(异步场景加载)_第4张图片

  7. File-Build Settings,将现在的场景和要加载的场景拖拽到窗口中
    Unity制作场景加载进度条(异步场景加载)_第5张图片

  8. LoadManager.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class LoadManager : MonoBehaviour
{
    public GameObject loadScreen;
    public Slider slider;
    public Text text;

    public void LoadNextLevel()
    {
        StartCoroutine(LoadLevel());//开启协程
    }

    IEnumerator LoadLevel()
    {
        loadScreen.SetActive(true);//可以加载场景
        AsyncOperation operation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().buildIndex + 1);

        operation.allowSceneActivation = false;//不允许场景自动跳转
        while(!operation.isDone)//场景加载没有完成时
        {
            slider.value = operation.progress;//slider的值=加载的进度值
            text.text = operation.progress * 100 + "%";

            if (operation.progress >= 0.9F)
            {
                slider.value = 1.0f;
                text.text = "100%";
                operation.allowSceneActivation = true;//允许场景自动跳转
            }

            yield return null;//跳出协程
        }
    }
}

二级目录

三级目录

AsyncOperation
LoadManager

你可能感兴趣的:(Unity3D,unity,游戏引擎)