异步加载

Posted tjg33

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异步加载相关的知识,希望对你有一定的参考价值。

异步加载

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

public class S2Manager : MonoBehaviour
{



//UI进度条以
	private Slider _proSlider;
//目的是对场景进行控制 获取进度值 和允许显示
	private AsyncOperation _async;
//UI应该达到的进度
	private int _currProgress;
	//1. 获取滑动条
	//协同加载(异步加载 不断获取进度值 经过计算赋值给滑动条)
	// Use this for initialization
	void Start ()
	{
		_currProgress = 0;
		_async = null;
		_proSlider = GameObject.Find("Slider").GetComponent<Slider>();
		StartCoroutine("LoadScene");
	}
	
	// Update is called once per frame
	void Update ()
	{
		//目的就是现实进度
		_proSlider.value = _currProgress / 100.0f;
	}

	IEnumerator LoadScene()
	{
//临时的进度
		int tmp;
		//异步加载
		_async = SceneManager.LoadSceneAsync("S3");

		//先不显示场景 等到进度为100%的时候显示场景 必须的!!!!
		_async.allowSceneActivation = false;

		#region 优化进度的 
		while (_async.progress < 0.9f)
		{
			//相当于滑动条应该到的位置
			tmp = (int) _async.progress * 100;
			
			//当滑动条 < tmp 就意味着滑动条应该变化
			while (_currProgress < tmp)
			{

				++_currProgress;
				yield return  new WaitForEndOfFrame();
			}
		}//while end   进度为90%

		tmp = 100;
		while (_currProgress < tmp)
		{

			++_currProgress;
			yield return  new WaitForEndOfFrame();
		}
		

		#endregion
		//处理进度为0 ~0.9的0
		
		//进度条完成 允许显示
		_async.allowSceneActivation = true;
		//SceneManager.loa
	}
}

  

以上是关于异步加载的主要内容,如果未能解决你的问题,请参考以下文章

如何延迟或异步此 WordPress javascript 片段以最后加载以加快页面加载时间?

异步任务片段背景数据

我应该在 Fragment 中的啥生命周期状态下执行异步任务?

片段布局加载延迟

从片段中调用分离的异步任务类

Android 我应该在异步任务中将片段作为弱引用传递吗?