通常游戏的主场景包含的资源较多,会导致加载场景的时间较长。为了避免这个问题,可以首先加载Loading场景3D道具橙光游戏,然后再通过Loading场景来加载主场景。因为Loading场景包含的资源较少unity 进度条制作unity 进度条制作,所以加载速度快。在加载主场景的时候一般会在Loading界面中显示一个进度条来告知玩家当前加载的进度。
在Unity中可以通过调用Application.LoadLevelAsync函数来异步加载游戏场景,通过查询AsyncOperation.progress的值来得到场景加载的进度。
Loading场景进度条在游戏中的应用是很广泛的。进度条是用NGUI做的。
实现代码如下:
using UnityEngine;
using System.Collections;
public class scene : MonoBehaviour
{
public UISlider proLoadingBar; //NGUI进度条
public UILabel labProgress; //NGUI label用于显示加载百分之多少
//异步对象
void Start()
{
LoadGame();
}
public void LoadGame()
{
StartCoroutine(StartLoading("001"));
}
private IEnumerator StartLoading(string sceneName)
{
int displayProgress = 0;
int toProgress = 0;
AsyncOperation op = Application.LoadLevelAsync(sceneName); //异步对象
op.allowSceneActivation = false;
while (op.progress < 0.9f)
{
toProgress = (int)op.progress * 100;
while (displayProgress < toProgress)
{
++displayProgress;
SetLoadingPercentage(displayProgress);
yield return new WaitForEndOfFrame();
}
}
toProgress = 100;
while (displayProgress < toProgress)
{
++displayProgress;
SetLoadingPercentage(displayProgress);
yield return new WaitForEndOfFrame();
}
op.allowSceneActivation = false;
}
private void SetLoadingPercentage(int DisplayProgress) //设置显示进度
{
proLoadingBar.value = DisplayProgress * 0.01f;
labProgress.text = DisplayProgress.ToString() + "%";
}
}
效果如下:(.gif图可能会有点卡,但是实际效果是完全很顺畅不会卡的。)
文章来源:https://blog.csdn.net/Gary_888/article/details/51407177