unity3d怎么实现异步加载场景

 我来答
赤羽雀
2017-03-16 · TA获得超过122个赞
知道答主
回答量:115
采纳率:100%
帮助的人:23.5万
展开全部

using UnityEngine;

using System.Collections;

using UnityEngine.UI;

using UnityEngine.SceneManagement;

/// <summary>

/// 挂载到camera上  异步加载

/// </summary>

public class ARLoadingScr : MonoBehaviour

{

/// <summary>

/// 滑动条提交回答

/// </summary>

public Slider processBar;


private AsyncOperation async;


private int nowProcess;


void Start()

{

StartCoroutine(loadScene());

}

/// <summary>  

/// 加载完场景后就会跳转  

/// </summary>  

/// <returns></returns>  

IEnumerator loadScene()

{

async = SceneManager.LoadSceneAsync("AR");

async.allowSceneActivation = false;

yield return async;

}


void Update()

{

if (async == null)

{

return;

}


int toProcess;

// async.progress 你正在读取的场景的进度值  0---0.9    

// 如果当前的进度小于0.9,说明它还没有加载完成,就说明进度条还需要移动    

// 如果,场景的数据加载完毕,async.progress 的值就会等于0.9  

if (async.progress < 0.9f)

{

toProcess = (int)async.progress * 100;

}

else

{

toProcess = 100;

}

// 如果滑动条的当前进度,小于,当前加载场景的方法返回的进度   

if (nowProcess < toProcess)

{

nowProcess++;

}


processBar.value = nowProcess / 100f;

// 设置为true的时候,如果场景数据加载完毕,就可以自动跳转场景   

if (nowProcess == 100)

{

async.allowSceneActivation = true;

}

}

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式