Unity3D NGUI制作进度条
利用GUI可以制作进度条,但是NGUI更加方便
我是用的NGUI3.5.3,
先找到NGUI Slider的预制体,利用自带的UISlider来制作。
主要是利用UISlider的Value来控制进度条。
脚本
public GameObject BtnGaoLu;
public UISlider MyUISlider;
private bool isLoad=false;
private AsyncOperation async;
float progress = 0;
void Awake()
{
UIEventListener.Get(BtnGaoLu).onClick = fnChangeSence;
MyUISlider.alpha = 0;
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//绘制进度条,但是由于时间太短,效果不好
if (isLoad)
{
MyUISlider.alpha = 1;
progress = Convert.ToSingle((async.progress.ToString("f2")));
if (progress > 0)
{
MyUISlider.GetComponent<UISlider>().value = progress+0.8f;
//此处添加0.8f是因为我只加载到85%就跳转了,为了达到进度条到达100*的效果,所以添加了0.8,是实际情况而定。
print(progress);
}
}
}
void fnChangeSence(GameObject obj)
{
StartCoroutine(fnLoadSence("Final_Scene"));
}
IEnumerator fnLoadSence(string strSenceName)
{
isLoad = true;
async = Application.LoadLevelAsync(strSenceName);
yield return async;
}
这里注意使用Convert方法需要添加引用System
将触发按钮盒UISlider拖入公有变量中,运行即可。
实际的效果要根据加载时间来确定,再编辑其中只要第一次加载后,在运行就会非常快,以至于看不到进度条效果,只要发布就好了