Unity场景:异步加载

示例代码

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Panel_Loading : MonoBehaviour
{
	Image Img_Load;
	Text Text_Percent;

	/// <summary>
	/// 虚拟进度
	/// </summary>
	private int _displayProcess;

	/// <summary>
	/// 当前进度
	/// </summary>
	private int _currentProcess;
	
	void Awake()
	{
		UpdateUI();
		Init();
	}
	
	void Init()
	{
		Img_Load = transform.Find_T<Image>("Img_LoadingBar");
		Text_Percent = transform.Find_T<Text>("Text_LoadingPercent");

		StartCoroutine("LoadScene");
	}

	IEnumerator LoadScene()
	{
		//状态重置
		_displayProcess = 0;

		//降低GC开销
		WaitForEndOfFrame WaitForEndOfFrame_ = new WaitForEndOfFrame();
		//发送的消息 data=K+V
		//必须要等一帧 不然加载界面刷不出来
		yield return WaitForEndOfFrame_;

		//开始异步加载
		AsyncOperation operation = SceneManager.LoadSceneAsync(Scene_Mgr.Instance.SceneName, LoadSceneMode.Single);
		operation.allowSceneActivation = false;

		while (operation.progress < 0.9f)
		{
			_currentProcess = (int)(operation.progress * 100);
			while (_displayProcess < _currentProcess)
			{
				_displayProcess += 1;
                Img_Load.fillAmount = _displayProcess / 100f;
                Text_Percent.text = _displayProcess.ToString() + "%";
                yield return WaitForEndOfFrame_;
			}

			yield return WaitForEndOfFrame_;
		}

		_currentProcess = 100;
		while (_displayProcess < _currentProcess)
		{
			_displayProcess += 1;
			Img_Load.fillAmount = _displayProcess / 100f;
			Text_Percent.text = _displayProcess.ToString() + "%";
			yield return WaitForEndOfFrame_;
		}
		operation.allowSceneActivation = true;
		yield return WaitForEndOfFrame_;
	}

	void UpdateUI()
	{
		Img_Load.fillAmount = 0;
		Text_Percent.text = "0%";
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值