Unity 异步加载场景(简单上手版)
首先附上需要用到的代码:
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;using UnityEngine.UI;public class MyLevelManager : MonoBehaviour{ static string nextLevel; AsyncOperation async; public float tempprogress; public Slider slider; public Text text; // Start is called before the first frame update void Start() { tempprogress = 0; //这里我加载场景的名字叫Loading if (SceneManager.GetActiveScene().name == "Loading") { async = SceneManager.LoadSceneAsync(nextLevel); async.allowSceneActivation = false; } } public void LoadLoadingLevel(string nextLevelName) { nextLevel = nextLevelName; SceneManager.LoadScene("Loading"); } // Update is called once per frame void Update() { if (text && slider) { //这里为了加载更加流畅对原加载条进行改进,变成伪进度条 //可以对Time.deltaTime*num中的num数字进行调整,达到想要的加载速度 tempprogress = Mathf.Lerp(tempprogress, async.progress, Time.deltaTime * 2); text.text = ((int)(tempprogress / 9 * 10 * 100)).ToString() + "%"; slider.value = tempprogress / 9 * 10; if (tempprogress / 9 * 10 >= 0.995) { text.text = 100.ToString() + "%"; slider.value = 1; async.allowSceneActivation = true; } } }}
下面就是脚本的使用方法:
首先在场景中要有个UI按钮Button,比如我这里的 开始游戏 (这里的按钮我加了背景图)
然后在该Button的Inspector窗口中进行如下设置,红色箭头所指地方填上需要异步加载到的场景
然后在Loading(Loading是我建的一个加载的场景名)场景中进行如下设置
然后再进行如下设置(这里我把脚本挂载到Canvas,当然挂在其他地方也可以)
红色箭头部分记得把Slider和Text拖进去
这样就给要加载的场景做好异步加载啦!