UNITY 异步加载场景的一个例子

UNITY 异步加载场景的一个例子


假如,我们有 两个场景,


现在,我们希望从 A 转到 B ,


假如,这个过程,需要5秒钟,那么,我们希望不是 “卡住”5秒,而是 动态的5秒,


如果这5秒钟内,我能看到一个进度条 从 10% 逐渐的转到 90%时, 至少我们知道,游戏不是死机了,而是正在加载中


可以这样,


using UnityEngine;
using System.Collections;


public class LoadingScene : MonoBehaviour {

AsyncOperation  asyn;


void Start () {

StartCoroutine("BeginLoading");
}

// Update is called once per frame
void Update () {

Debug.LogError ("update:" + asyn.progress);
}

IEnumerator BeginLoading()
{

asyn = Application.LoadLevelAsync ("scrollViewTest");
yield return asyn;
}


}


这里, Update 每帧 的进度 可以通过 asyn.progress获取,


StartCoroutine 就像是说 , 我现在要异步调用一个函数了 ,


LoadLevelAsync 表示 异步加载,


异步加载和同步加载的区别有点像什么呢?


一种是我们需要先停下来,等待某件事情结束之后,再接下来做其他事情。


这有点像,我们先询问某个人的电话号码后,才能给他打电话联系到他。


我们此刻,除非联系到他,才能接下来的行动,


另一种,有点像,我们发了一条短信,发了短信后,就等他回消息就可以了,


可能他一分钟内就能回复,也可能一天后回复。


可能我们只是询问一下包裹到没到。