异步加载动态进度条,显示百分比

using UnityEngine;
using System.Collections;
//using Globe;


public class Loading : MonoBehaviour {


private float fps = 2.0f;//效果不好,可更改此值
private float time;
//一组动画的贴图,在编辑器中赋值。(图片需有不同的进度显示效果,我赋值了10个图片)
public Texture2D[] animations;
private int nowFram;
//异步对象
AsyncOperation async;


//读取场景的进度,它的取值范围在0 - 1 之间。
int progress = 0;


void Start()
{
//在这里开启一个异步任务,
//进入loadScene方法。
Globe.loadName= "CompleteScene";


  StartCoroutine(loadScene());
}


//注意这里返回值一定是 IEnumerator
IEnumerator loadScene()
{
//异步读取场景。
//Globe.loadName 就是A场景中需要读取的C场景名称。
async = Application.LoadLevelAsync(Globe.loadName);


//读取完毕后返回, 系统会自动进入C场景
yield return async;


}


void OnGUI()
{
//因为在异步读取场景,
//所以这里我们可以刷新UI
DrawAnimation(animations);


}


void Update()
{


//在这里计算读取的进度,
//progress 的取值范围在0.1 - 1之间, 但是它不会等于1
//也就是说progress可能是0.9的时候就直接进入新场景了
//所以在写进度条的时候需要注意一下。
//为了计算百分比 所以直接乘以100即可
progress =  (int)(async.progress *100);


//有了读取进度的数值,大家可以自行制作进度条啦。
// Debug.Log("xuanyusong" +progress);


}
//这是一个简单绘制2D动画的方法,没什么好说的。
void   DrawAnimation(Texture2D[] tex)
{


time += Time.deltaTime;


if(time >= 1.0 / fps){


      nowFram++;


      time = 0;


      if(nowFram >= tex.Length)
      {
      nowFram = 0;
      }
        }
GUI.DrawTexture(new Rect( Screen.width/2-100,200,120,30) ,tex[nowFram] );


        //在这里显示读取的进度。
GUI.Label(new Rect( Screen.width/2-100,235,300,60), "加载进度为" + progress+"%");


}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值