现在的位置: 首页 > 综合 > 正文

Unity3D之异步加载游戏场景中关于进度条显示

2014年06月12日 ⁄ 综合 ⁄ 共 1544字 ⁄ 字号 评论关闭

关于异步任务相信大家都不会太陌生,今天主要是把自己这两天做过的一些过程和大家进行分享,说到异步任务,肯定有同步任务,一般的同步场景加载的时候通常会用到的方法是 Application.LoadLevel("loading");但是大家是否也同时发现,同步加载的时候如果你的游戏对象相对较多的时候,场景加载速度是很慢的,就会伴有卡壳的现象出现,这样难免就会影响用户的体验效果,这就是用同步的效果。下面在介绍一下关于异步加载,异步加载分两种情况,情况一:使用以下方法application.LoadLevelAsync("ck1");情况二:使用以下方法application.LoadLevelAdditiveAsync("ck1");其实这两种方法加载的原理是一样的就是显示的效果不同罢了。要想实现进度条我们就应该新建一个专门显示进度条的场景,比如说有三个场景,在场景一中获得触发事件,先进入场景二中显示进度条,同时异步加载场景三,当场景三加载完后就进入场景三,情况一:场景二消失;情况二:场景二的对象继续执行,代码如下:

using UnityEngine;

using System.Collections;


public class loads : MonoBehaviour {

    //申明异步对象

    AsyncOperation async;

    public Texture2D picturebg;

    public Texture2D blood_red;

    public Texture2D blood_black;

    public int HP = 0;


    public bool sss;

    // Use this for initialization

    void Start()

    {

        //StartCoroutine()

        StartCoroutine(loadSence());


    }


    private IEnumerator loadSence()

    {

//情况一

        async = Application.LoadLevelAsync(Golble.loadName);

//情况二

async = Application..LoadLevelAdditiveAsync(Golble.loadName);

        yield return async;

        DontDestroyOnLoad(transform);

    }


    // Update is called once per frame

    void Update()

    {

        if (HP < 50)

        {

            HP++;

        }

        if (HP == 50)

        {

            HP = 0;

        }

       

    }

//这里主要是进度条显示

    void OnGUI()

    {

        GUI.DrawTexture(new Rect(Screen.width / 2 - 270, Screen.height/2-50, 545, 100), picturebg);

        int blood_width = blood_black.width * HP / 50;

        GUI.DrawTexture(new Rect(Screen.width/2-270, Screen.height/2-22, 540, 45), blood_black);

        GUI.DrawTexture(new Rect(Screen.width / 2 - 265, Screen.height/2-15, blood_width, 30), blood_red);

        GUI.Label(new Rect(Screen.width / 2 - 270, Screen.height / 2 - 40, 100, 30), "Loading......");

    }

}

【上篇】
【下篇】

抱歉!评论已关闭.