一、把过度场景加载出来
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class onClick : MonoBehaviour {
// Use this for initialization
void Start () {
this.GetComponent<Button>().onClick.AddListener(delegate()
{
Debug.Log("cllick");
SceneManager.LoadScene("loadScene");
});
}
// Update is called once per frame
void Update () {
}
}
二、使用协程判断游戏场景是否加载完成
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/// <summary>
/// 异步加载脚本
/// </summary>
public class AsyncLoadScene : MonoBehaviour
{
public Slider loadingSlider;
public Text loadText;
private AsyncOperation operation;
private int displayProgress;
private int toProgress;
void Start()
{
loadingSlider.value = 0;
loadingSlider.maxValue = 100;
if (SceneManager.GetActiveScene().name == "loadScene")
{
//启动协程
StartCoroutine(AsyncLoading());
}
}
void Update()
{
Debug.Log(operation.progress);
if (loadingSlider.value < 99)
{
loadingSlider.value++;
loadText.text = "" + loadingSlider.value;
}
else if (operation.progress == 0.9f)
{
loadingSlider.value = 100;
loadText.text = loadingSlider.value + "%";
operation.allowSceneActivation = true;
}
}
private IEnumerator AsyncLoading()
{
operation = SceneManager.LoadSceneAsync("gameScene");
operation.allowSceneActivation = false;
yield return operation;
}
private void SetLoadingPercentage(int Percentage)
{
loadingSlider.value = Percentage;
}
}
当operation.allowSceneActivation为false时,operation.progress会等于0.9f直到allowSceneActivation为true再进行0.9-1的加载
本文介绍如何在Unity中使用MonoBehaviour组件实现游戏场景的过渡加载,并通过UI展示加载进度。详细展示了使用SceneManager加载场景的方法,以及如何通过协程控制异步加载过程,确保加载进度的准确显示。
3018

被折叠的 条评论
为什么被折叠?



