版本:unity 5.3.4 语言:C#
老大让我做什么来着?好像就是测试代码、录个视频吧,有点忘了,应该不是什么重要的事情,反正我还是研究我的代码。
现在就看看工程的代码,正好看到了一段异步加载场景,它里面写的太乱了,我整理了一下发上来。
这边用到了UGUI的Slider组件,玩家自行添加一下。
代码如下(GameSystem是一个单例、一个全局类):
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class LoadingScene : MonoBehaviour {
public Slider slider;
AsyncOperation async;
int process = 0; //进度,一帧最多加1,到100时进入新的场景
// Use this for initialization
void Start()
{
StartCoroutine("Loading"); //开一个协程
}
IEnumerator Loading()
{
Debug.Log("Start to Load");
// 异步加载场景
async = Application.LoadLevelAsync(GameSystem.getInstance().loadingScene);
async.allowSceneActivation = false;
// 没有加载完的情况下一直在这边循环
while (!async.isDone)
{
//if (async.progress >= 0.9f) //似乎是unity的一个bug,只能加载到90%(注意这边0.9f别写成0.9,这是一个精度的问题,double型的0.9是永远达不到的)
// break;
if (process >= 100)
break;
yield return null;
}
Debug.Log("Load Complete");
yield return new WaitForSeconds(0.5f);
// 进入场景
async.allowSceneActivation = true;
}
void OnGUI()
{
if (async == null)
return;
// 进度条的显示
if (async.progress / 0.9f * 100 > process)
++process;
slider.value = process / 100f;
GUILayout.Label(process.ToString());
Debug.Log("Loading " + process);
}
}
以上。