using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/// <summary>
/// 【Function:加载】【 TIme:2022 05 18】【08实现场景的异步加载:添加】
/// </summary>
public class Loading : MonoBehaviour
{
/// <summary>场景的名字【08实现场景的异步加载:添加】</summary>
private string sceneName;
/// <summary>Text 进度条文本【08实现场景的异步加载:添加】</summary>
private Text text_progress;
/// <summary>异步协程 加载场景【08实现场景的异步加载:添加】</summary>
private AsyncOperation ao;
/// <summary>是否再加载场景【08实现场景的异步加载:添加】</summary>
private bool isLoad=false;
private void Awake()
{
sceneName = "2.Game";
text_progress = GetComponent<Text>();//【08实现场景的异步加载:添加】
EventCenter.AddListener(EventDefine.StartLoadScene, StartLoad);//添加监听【08实现场景的异步加载:添加】
gameObject.SetActive(false);//【08实现场景的异步加载:添加】
}
private void OnDestroy()
{
EventCenter.RemoveListener(EventDefine.StartLoadScene, StartLoad);//移除监听【08实现场景的异步加载:添加】
}
/// <summary>
/// 【Function:开始加载】【 TIme:2022 05 18】【08实现场景的异步加载:添加】
/// </summary>
void StartLoad()
{
gameObject.SetActive(true);//【08实现场景的异步加载:添加】
StartCoroutine("Load");//【08实现场景的异步加载:添加】
}
/// <summary>
/// 【Function:协程 加载场景】【 TIme:2022 05 18】【08实现场景的异步加载:添加】
/// </summary>
/// <returns></returns>
IEnumerator Load()
{
int displayProgress = -1;//【08实现场景的异步加载:添加】
int toProgress = 100;//【08实现场景的异步加载:添加】
while (displayProgress<toProgress)//【08实现场景的异步加载:添加】
{
displayProgress++;//【08实现场景的异步加载:添加】
ShowProgress(displayProgress);//【08实现场景的异步加载:添加】
if (isLoad==false)
{
ao=SceneManager.LoadSceneAsync(sceneName);//【08实现场景的异步加载:添加】
ao.allowSceneActivation=false;//当场景准备好了, 不让其切换场景,还需要等我们的进度条跑到100%,再加载场景【08实现场景的异步加载:添加】
isLoad = true;
}
yield return new WaitForEndOfFrame();//等待此针结束【08实现场景的异步加载:添加】
}
if (displayProgress>=100)
{
ao.allowSceneActivation = true;//进度条好了,异步加载场景才可以成功【08实现场景的异步加载:添加】
StopCoroutine("Load");//【08实现场景的异步加载:添加】
}
}
/// <summary>
/// 【Function:显示进度条】【 TIme:2022 05 18】【08实现场景的异步加载:添加】
/// </summary>
/// <param name="progress"></param>
private void ShowProgress(int progress)
{
text_progress.text = progress.ToString()+"%";//【08实现场景的异步加载:添加】
}
}