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 表示 异步加载,
异步加载和同步加载的区别有点像什么呢?
一种是我们需要先停下来,等待某件事情结束之后,再接下来做其他事情。
这有点像,我们先询问某个人的电话号码后,才能给他打电话联系到他。
我们此刻,除非联系到他,才能接下来的行动,
另一种,有点像,我们发了一条短信,发了短信后,就等他回消息就可以了,
可能他一分钟内就能回复,也可能一天后回复。
可能我们只是询问一下包裹到没到。