using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class GameMain : MonoBehaviour
{
private bool flag = false;
public Button btn;
public GameObject loadPanel;
public Slider slid;
private AsyncOperation changSce;
private void Start()
{
loadPanel.SetActive(flag);
slid.value = 0;
btn.onClick.AddListener(() =>
{
//激活目标场景
flag = true;
changSce = SceneManager.LoadSceneAsync("SampleScene");
changSce.allowSceneActivation = false;//手动跳转
loadPanel.SetActive(flag);
});
}
private float time = 0;
private float waitTime = 2;
void Update()
{
if (!flag) return;
float timeNum = time / waitTime;
//达到缓冲时间 并且场景加载完毕
if (time >= waitTime && changSce.progress >= 0.9f)
{
time = 0;
flag = false;
slid.value = 1;
changSce.allowSceneActivation = true;
}
else if (time >= waitTime)//接近时间但场景还未加载完毕
{
time = waitTime;
}
else
{
time += Time.deltaTime;
}
//取最小加载比值赋值
slid.value = timeNum < changSce.progress ? timeNum :changSce.progress;
}
}
简单异步切换场景
最新推荐文章于 2023-08-19 11:19:25 发布