public UISlider slider; //滑动条
public GameObject progressBar;//进度条
void Start()
{
progressBar.SetActive(false);//滑动条不激活
}
public void SetLoadingPercentage(float value)//传入滑动条Value值
{
slider.value = value;
}
public void LoadGame()//进入游戏
{
progressBar.SetActive(true);//激活滑动条
StartCoroutine(StartLoading(1));//调用协程
}
private IEnumerator StartLoading(int scene)
{
int displayProgress = 0;//展示的进度
int toProgress = 0;//实际的进度
AsyncOperation op = Application.LoadLevelAsync(scene);//异步加载
op.allowSceneActivation = false;//禁止Unity加载完毕后自动切换场景
//PS:把allowSceneActivation设置为false后,Unity就只会加载场景到90%,剩下的10%要等到allowSceneActivation设置为true后才加载
toProgress = (int)op.progress * 100;//实际加载进度
while (displayProgress < toProgress)//让滑动条数值大于加载进度,这样看起来滑动条就平滑点
{
++displayProgress;
SetLoadingPercentage(displayProgress / 100f);//传入滑动条数值
yield return new WaitForEndOfFrame();// 等待帧结束
}
//剩下的10%进度
toProgress = 100;
while (displayProgress < toProgress)
{
++displayProgress;
SetLoadingPercentage(displayProgress / 100f);
yield return new WaitForEndOfFrame();
}
op.allowSceneActivation = true;
}